PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit imagecopyresized


gerhard
02.08.2003, 07:12:54
ich habe beim verkleinern eines bildes (imagecopyresized) probleme, obwohl ich ausnahmesweise brav nach leerbuch (SELFPHPH, Damir Enseleit) vorgehe:

ich habe ein (bestehendes) bild $altbild;

ich lese die bilddaten in $info und zwar:

$info=getimagesize($altbild);

halbiere die grösse:

$neu_b=$info[0]/2;
$neu_h=$info[1]/2;

erzeuge mit den neuen dimensionen ein (leeres) bild:

$neubild = imagecreate($neu_b,$neu_h);

und kopiere das alte bild in der ganzen größe (also von x=0 und y=0, ganze breite und ganze höhe) in das neue (kleinere) bild:

imagecopyresized($neubild, $altbild, 0,0, 0,0, $neu_b, $neu_h,
$info[0],$info[1]);


das bringt mir die fehlermeldung:


Warning: Supplied argument is not a valid Image resource in /home/www/web11/html/gaestebuch/bilder/test.php on line 24

line 24 ist die mit "imagecopyresized...."


was mache ich falsch?

Ben20
02.08.2003, 09:48:12
Bin mir jetzt nicht sicher, aber Du musst vor von der Datei ein "virtuelles" Bild erstellen

Also

$altbildvirt = imagecreatefromjpeg($altbild); (oder auch imagecreatefrompng oder imagecreatefromgif usw..)

Dann erst kannst Du imagecopyresized machen und zwar dann so:

imagecopyresized($neubild, $altbildvirt, 0,0, 0,0, $neu_b, $neu_h,
$info[0],$info[1]);

gerhard
02.08.2003, 17:04:05
leider gehts so nicht - denn:



Warning: ImageCreateFromGif: No GIF support in this PHP build


--->>>> siehe "SELFPHP" beim befehl "ImageCreateFromGif:":
Aus rechtlichen Gründen wurde die GIF-Unterstützung ab der Version 1.6 in die
GD-Bibliothek nicht mehr implementiert. Sie können also diesen Befehl nur
nutzen, wenn eine Version vor 1.6 existiert.

wenns aber daran liegt, wie gehe ich vor (php-version: 4.0) ????

Ben20
02.08.2003, 23:25:50
Dann hast Du keine Chance Gifs mit Hilfe der GD zu erstellen. Du könntest evtl noch imagemagick verwenden. www.imagemagick.org glaub' ich. Allerdings hat nicht jeder Provider das installiert. Ein andere Lösung wäre natürlich auf PNGs umzuschwenken.

gerhard
03.08.2003, 07:34:29
ums gif-erstellen in dem sinn gehts mir gar nicht - vielleicht weisst du (weiss jemand) eine lösung für das eigentliche problem (und ich kann mir nicht vorstellen, dass das nicht öfter gebraucht wird!):

ein user lädt ein bild auf den server (dazu habe ich ein upload-modul)
- z.b. in ein gästebuch oder dergleichen

nun gibts natürlich viele gästebucheintragungen - manche mit bild, manche ohne bild.

ich will eine liste mit diesen einträgen (auf die man dann klicken kann, damit man den ganzen eintrag sieht...) und in dieser liste soll das bild als als kleines icon sichtbar sein

das wäre ja recht einfach lösbar: nur werden die ladezeiten verdammt lange, wenn in so einer lise 1o oder 20 einträge mit bilder sind und die bilder (von der dateimenge her) alls die originalgrösse haben.

daher wollte ich beim upload gleichzeitig ein icon erzeugen, das nur der auflistung dient, damits schneller geht.

(wenn der betrachter dann auf das kleine bild - das icon klickt, öffnet sich dann das originalbild....)

sowas gibt doch? wie ist das (in php) realisiert?

bei einem gästebuch kann ich nicht davon ausgehen, dass die user so gut bescheid wissen, selbst das bild zweimal zu schicken (einmal originalgrösse, ein zweites mal verkleinert für die liste) - also muss ich es verkleinern.....

wie?

Ben20
03.08.2003, 11:07:41
Der Ansatz die Bilder mit der GD Lib zu verkleinern war schon richtig, aber wie gesagt aus Lizenzrechtlichen Gründen gibts in der GD keine GIF Unterstützung mehr, also keinen Read und keine Createsupport mehr. Deshalb könntest Du zwar von JPEGs und PNGs vorschaubilder erzeugen, nicht jedoch von gifs. Wenn Du einen eigenen Server hast würde ich die wie gesagt Imagemagick empfehlen, damit kannst Du glaub' ich noch Gifs bearbeiten, oder Du suchst Du eine ältere GD Lib.


Ansonsten kannst Du natürlich ins Uploadmodul eine Abfrage einbauen die überprüft ob das Bild eine Gif ist und wie groß die Gif ist, wenn sie zu groß ist gibst Du dem User eine Meldung aus, dass er keine so großen Gifs hochladen darf sonder JPG oder PNG verwenden soll, oder das Bild verkleinern soll.

gerhard
03.08.2003, 17:43:32
deine idee mit der abfrage ist schon ganz gut - ich könnte ja auch zum beispiel nur jpg-upload zulassen: laut SLFPH gilt dasselbe wie bei GIF auch bei JPG.

und zweitens: das problem ist ja nicht zu lösen, indem ich eine bestimmte grösse nicht zulassen, sondern ich WILL ja 2 grössen: eines als vorschaubild in der liste (so maximal 60x80) und ein zweites, das sich (in eigenem fenster) als vergrößerung öffnet.

d.h. ich müsse den user "zwingen" 2 grössen zu übertragen: erstens werden das viele nicht tun (zu viel aufwand - zuerst runterrechnen und dann auch noch 2 dateien übertragen!) und zweitens gibts ja auch user, die keine ahnung haben, wie sie ein bild runterrechnen....