Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ImageGreyOver bląd
Forum PHP.pl > Forum > Przedszkole
chou
Witam!

mam taki błąd:
Kod
Warning: imagecolorstotal(): supplied argument is not a valid Image resource in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 4

Warning: imagegif(): supplied argument is not a valid Image resource in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 31


  1. <?php
  2.  
  3. function MakeColoursGrey($im,$col){
  4. 3: $total=ImageColorsTotal($im);
  5. for($i=0;$i<$total;$i++){
  6.  $old=ImageColorsForIndex($im,$i);
  7.  
  8.  
  9. 31: ImageGif($img);
  10.  
  11.  
  12. ?>


gd2 mam, ale niestety nie rozumiem dlaczego mi niedziala ?

resource ?

do tego wyakakuje blad header, ale co ciekawe dalem ob_start w index php, i wszystko dziala tylko i wylacznie jezeli nie bede probowa ob_end_flush(); ohmy.gif


nie radze sobie z tym :/

po wpisaniu
  1. <img src="extension/greyimage.php3?src=extension/image.jpg" border="0" />
nie wyswietla mi się nic po prostu Zero..

ale gdy wpiszę:
  1. <?php
  2.  
  3. echo ImageGreyOver('extension/image.gif','http://extension/image.gif');
  4.  
  5. ?>
to pokazuje mi sie obrazek jezeli najade na niego myszka, inaczej pokazuje czerwony x.

co dziwne zrobilem na poczatku index.php tak:

  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. ?>


a pozniej mi wyskoczylo to:
  1. Notice: Undefined variable: src in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 25
  2. <--- to jest to: [php]<?php
  3. =imagecreatefromgif();
  4. ?>[/php]
  5.  
  6. Notice: Undefined variable: col in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 29
  7. <--- to jest to: [php]<?php
  8. MakeColoursGrey(,);
  9. ?>[/php]
  10.  
  11. Warning: imagegif(): supplied argument is not a valid Image resource in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 35
  12. <--- to jest to: [php]<?php
  13. ImageGif();
  14. ?>[/php]


help me pls

p.s:
php.ini:
Cytat
extension=php_gd2.dll
LBO
daj lepiej wiecej tego kodu... bo z tego co tu widze nic nie wynika (oprocz tego ze nasmieciles w czasie przenoszenia na forum)... a ogolnie złe parametry dajesz obu funkcjom..
chou
to jest gotowiec:
chciałem się troszeczkę pobawić i później może rozbudować w glaerię,...


Źródło:
ImageGreyOver
  1. #####I have included the 2 functions MSFPhover and MSFPpreload so it works 
  2. #####without already having these declared elsewhere
  3. #####you should also note that you will need the php gd extension library
  4. #####on your server -- if you are sorted you can use this script with jpEg, gif
  5. #####and png formats -- works fine with all
  6. #####use: echo ImageGreyOver('image.gif','http://link') to define your image source
  7. #####and its link -- the image should, if referenced in this manner, be in the
  8. #####same directory as the two php files
  9. #####NB:I have enclosed the main html-generating php file in html echoes to make it
  10. #####easy to create a freestanding file for testing -- call this first part
  11. #####file_something.php3
  12. #####alternatively, strip the html echoes out
  13. #####(NOT the echo ImageGreyOver('image.gif','http://link'))
  14. #####and chuck in your script
  15. #####HTH
  16.  
  17.  
  18. <?
  19.  
  20. echo "<html>";
  21. echo "<body>";
  22. echo "<center>";
  23.  
  24. function ImageGreyOver($src,$href,$imageprops="border=0",$linkprops=""){
  25. global $giop;
  26. $giop++;
  27. $greysrc="greyimggif.php3?src=$src";
  28. $size=GetImageSize($src);
  29. return "nn<script language="JavaScript"><!--n".
  30.  "MSFPhover =n". 
  31. "(((navigator.appName == "Netscape") &&n". 
  32. "(parseInt(navigator.appVersion) >= 3 )) ||n". 
  33. "((navigator.appName == "Microsoft Internet Explorer") && n".
  34. "(parseInt(navigator.appVersion) >= 4 )));n".
  35. "function MSFPpreload(img) { var a=new Image(); a.src=img; return a; }n".
  36.  "MSFPnav".$giop."n=MSFPpreload('$greysrc');".
  37.  "MSFPnav".$giop."h=MSFPpreload('$src'); ".
  38.  "// --></script>nn".
  39. "<a href=".$href." $linkprops onmouseover="if(MSFPhover)
  40. document['MSFPnav".$giop."'].src=MSFPnav".$giop."h.src" onmouseout="if(MSFPhover)
  41. document['MSFPnav".$giop."'].src=MSFPnav".$giop."n.src"><IMG $size[3]
  42. src="".$greysrc."" $imageprops name="MSFPnav".$giop.""></a>";
  43.  
  44. }
  45.  
  46. echo ImageGreyOver('image.gif','http://link');
  47.  
  48.  
  49. echo "</center>";
  50. echo "</body>";
  51. echo "</html>";
  52.  
  53. ?>
  54.  
  55. #####save as file greyimggif.php3 in same directory
  56.  
  57. <?
  58. #this file outputs a grey version of specified image
  59. #use of this file:
  60. # in the image tag, <img border=0 src=greyimage.php3?src=imagesrc&col=colno >
  61. # where imagesrc is the source of the original colour version
  62. # where colno is 0 for grey, 1 for red, 2 green, 3 blue
  63.  
  64.  
  65.  
  66.  
  67. function MakeColoursGrey($im,$col){
  68. $total=ImageColorsTotal($im);
  69. for($i=0;$i<$total;$i++){
  70.  $old=ImageColorsForIndex($im,$i);
  71.  
  72.  #trying to keep proper saturation when converting
  73.  $commongrey=(int)($old[red]+$old[green]+$old[blue])/3;
  74.  if(!$col){
  75.  ImageColorSet($im,$i,$commongrey,$commongrey,$commongrey);
  76.  }elseif($col==1){
  77.  ImageColorSet($im,$i,$commongrey,0,0);
  78.  }elseif($col==2){
  79.  ImageColorSet($im,$i,0,$commongrey,0);
  80.  }elseif($col==3){
  81.  ImageColorSet($im,$i,0,0,$commongrey);
  82.  }
  83. }
  84. }
  85. $img=imagecreatefromgif($src);
  86.  
  87.  
  88. #change the colours to grey
  89. MakeColoursGrey($img,$col);
  90.  
  91. #send the http header, this outputs an image of type gif
  92. Header("Content-Type: image/gif");
  93.  
  94. #send the image
  95. ImageGif($img);
  96.  
  97.  
  98. ?>
  99.  
  100.  
  101. ###### end of greyimg.php3
  102.  
  103.  
  104.  
  105. </body>
  106. </html>
LBO
hmmm.. PHP3, czyli wszystkie zmienne byly globalne, ale teraz jest czas PHP4/PHP5, jest dyrektywa register_globals... wiec musisz adresowac zmienne dokladniej..

zmien w pliku greyimggif.php3:
  1. <?php
  2.  
  3. $img=imagecreatefromgif($_GET['src']);
  4.  
  5.  
  6. #change the colours to grey
  7. MakeColoursGrey($img,$_GET['col']);
  8. ?>

ale szczerze mowiac, poszukaj jakiegos gotowca przynajmniej pod PHP4, jakos tak dziwnie to wyglada tongue.gif, pozdro
chou
Cytat(LBO @ 2006-01-20 18:15:22)
hmmm.. PHP3, czyli wszystkie zmienne byly globalne, ale teraz jest czas PHP4/PHP5, jest dyrektywa register_globals... wiec musisz adresowac zmienne dokladniej..

zmien w pliku greyimggif.php3:
  1. <?php
  2.  
  3. $img=imagecreatefromgif($_GET['src']);
  4.  
  5.  
  6. #change the colours to grey
  7. MakeColoursGrey($img,$_GET['col']);
  8. ?>

ale szczerze mowiac, poszukaj jakiegos gotowca przynajmniej pod PHP4, jakos tak dziwnie to wyglada tongue.gif, pozdro

niestety to nic nie poprawia :?

im dluzej pisze/bawie sie w php tym mniej rozumiem :S
jest to normalne ?
LBO
hmmm, prawdopodobnie jeszcze musisz w deklaracji funkcji zmienic:
  1. <?php
  2.  
  3. MakeColoursGrey(&$im,$col){
  4. //reszta kodu
  5. }
  6. //itd
  7. ?>


ja bym poszperal jednak w manualu troche.. user notes sa bardzo przydatne, o ile na przeszkodzie nie stanie bariera jezykowa
chou
dzięki wszystko było by fajnie gdyby nie:
Cytat
Warning: imagegif(): supplied argument is not a valid Image resource in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 35

może dlatego iż zmieniłem kawałek na cosik takiego ?
  1. <?php
  2. $total='resource ImageColorsTotal($im)';
  3. ?>

i czerwone x zamiast obrazka :/

angielski trochę znam +słownik i wszystko zrozumię tylko gorzej z zastosowaniem wiedzy, kiedy nie mam przykładów do przerabianego materiału, zazwyczaj jakieś są....
LBO
  1. <?php
  2.  
  3.  
  4. function MakeColoursGrey(&$im,$col){
  5. $total=ImageColorsTotal($im);
  6. for($i=0;$i<$total;$i++){
  7.  $old=ImageColorsForIndex($im,$i);
  8.  
  9.  #trying to keep proper saturation when converting
  10.  $commongrey=(int)($old[red]+$old[green]+$old[blue])/3;
  11.  if(!$col){
  12.  ImageColorSet($im,$i,$commongrey,$commongrey,$commongrey);
  13.  }elseif($col==1){
  14.  ImageColorSet($im,$i,$commongrey,0,0);
  15.  }elseif($col==2){
  16.  ImageColorSet($im,$i,0,$commongrey,0);
  17.  }elseif($col==3){
  18.  ImageColorSet($im,$i,0,0,$commongrey);
  19.  }
  20. }
  21. }
  22. $img=imagecreatefromgif($_GET['src']);
  23.  
  24.  
  25. #change the colours to grey
  26. MakeColoursGrey($img,$_GET['col']);
  27.  
  28. #send the http header, this outputs an image of type gif
  29. Header("Content-Type: image/gif");
  30.  
  31. #send the image
  32. ImageGif($img);
  33.  
  34. ?>

teraz jak wywolasz ten plik w przegladarce z odpowiednimi zmiennymi powinno byc okey i bez bledow :/

ij ka radzilem, zmien skrypt, poszukaj innego... podawanie nazw plikow a adresie url a potem ich wykorzystywanie to najgorsza rzecz jaka moze programista zrobic... zastanow sie nat tym

edit:
u mnie dziala pieknie...
chou
masz rację skoda zachodu, albo zrobie sam chociaż może to długo potrwać, albo znajde coś w google.


p.s.:
Cytat
Warning: imagecolorstotal(): supplied argument is not a valid Image resource in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 6

Warning: imagegif(): supplied argument is not a valid Image resource in c:\usr\apache\httpd\html\uso\extension\greyimg.php3 on line 33


mniejsza z tymi błędami, szkoda się fatygować
LBO
oki, ale na przyszlosc jak bedziesz sam robil to cuś...

dodaj jakis plik gif - zmien jego nazwe na image.gif - do tego samego katalogu w ktorym jest ten skrypt... wywolaj ten skryt w przegladarce.. potem w pasku adresu doklej:
?src=image.gif&col=0

i voila
chou
zaczełem od manuala: gd, później manual php: image function.
Przejrzałem kilka funkcji jawy....
zajrzałem do tego skryptu, żeby go zrozumieć i wpadłem na zaskakujący błąd z mojej strony który popełniłem dry.gif ,

a więc błąd znajduje się tutaj
  1. <?php
  2.  $greysrc="greyimggif.php3?src=$src"
  3. ?>


gdzie greyimagegif.php3 powinnien to być plik z funkcją MakeColoursGrey

to jest też błąd tego co to zrobił gdyż kazał on zapisać ten plik jako:
greyimg.php3

no cóz, wszystko działa świetnie pod php5 smile.gif

po przez
  1. <?php
  2. echo ImageGreyOver('image.gif','http://link');
  3. ?>

uzyskujemy to co chcemy

skrypt działa dobrze, nie trzeba niczego zmieniać oprócz greyimagegif.php3
LBO
Cytat(chou @ 2006-01-27 18:08:29)
a więc błąd znajduje się tutaj
  1. <?php
  2.  $greysrc="greyimggif.php3?src=$src"
  3. ?>


gdzie greyimagegif.php3  powinnien to być plik z funkcją MakeColoursGrey

wydaje mi sie ze ci to napisalem wczesniej... ?
Cytat
dodaj jakis plik gif - zmien jego nazwe na image.gif - do tego samego katalogu w ktorym jest ten skrypt... wywolaj ten skrypt w przegladarce.. potem w pasku adresu doklej:
?src=image.gif&col=0


i jezeli uzywasz teraz tego samego skryptu ktory podales na poczatku tematu to..hmmm.. naucz sie korzystac z tablicy $_GET (i $_POST rowniez).. z:
Kod
register_globals = on

spotykam sie tylko na serwerach lokalnych..a ty pewnie takiego uzywasz.. biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.