imagecreatefromjpeg

low-group

Erfahrenes Mitglied
hi,

ich möchte 4 Bilder zu ein Bild zusammenfügen. Soweit geht dieser Code recht gut, nur die einzelnen Bilder im Endbild werden nicht koreckt eingefügt.

Im Endbild erscheinen 2 Bilder oben und 2 unten. Bei der Ausgabe wird das erste Bild oben links koreckt eingefügt, das 2. Bild rechts daneben wird nur die linke Hälfte dargestellt, beim 3. Bild unten links wird die obere Hälfte dargestellt und beim 4, Bild wird das linke obere Viertel dargestellt. Also irgendwas stimmt da nicht.

Bei meinem test sind alle vorgegebenen Bilder genau 800x600 px groß.

Hier mal der Code dazu:

PHP:
 $image = imagecreatetruecolor(800,600);

$image1 = imagecreatefromjpeg("bilder/1-screen.jpg");
ImageCopyResampled($image, $image1,0,0,0,0,400,300,800,600);
ImageDestroy($image1);

$image2 = imagecreatefromjpeg("bilder/2-screen.jpg");
ImageCopyResampled($image, $image2,400,0,0,0,800,300,800,600);
ImageDestroy($image2);

$image3 = imagecreatefromjpeg("bilder/3-screen.jpg");
ImageCopyResampled($image, $image3,0,300,0,0,400,600,800,600);
ImageDestroy($image3);

$image4 = imagecreatefromjpeg("bilder/4-screen.jpg");
ImageCopyResampled($image, $image4,400,300,0,0,800,600,800,600);
ImageDestroy($image4);

imagejpeg($image,"bilder/thumbs/screen-1.jpg",80);
	@chmod('bilder/thumbs/screen-1.jpg', 0777);
ImageDestroy($image);

Wer kann mir dabei helfen?
 
also ich bin mir nicht ganz sicher, aber was mir auffält ist, dass bei Dir immer die Hälfte von den Bildern fehlt.

Warum dann nicht mal die positionsbestimmenden Werte verdoppeln? Ich weiß eh nicht, warum Du zur Positionsbestimmung immer nur 300 bzw. 400 nimmst.
Warum nicht 600 und 800 wenn die Bilder doch alle so breit bzw. hoch sind?
PHP:
<?
$image = imagecreatetruecolor(800,600); 

$image1 = imagecreatefromjpeg("bilder/1-screen.jpg"); 
ImageCopyResampled($image, $image1,0,0,0,0,800,600,800,600); 
ImageDestroy($image1); 

$image2 = imagecreatefromjpeg("bilder/2-screen.jpg"); 
ImageCopyResampled($image, $image2,800,0,0,0,800,600,800,600); 
ImageDestroy($image2); 

$image3 = imagecreatefromjpeg("bilder/3-screen.jpg"); 
ImageCopyResampled($image, $image3,0,600,0,0,800,600,800,600); 
ImageDestroy($image3); 

$image4 = imagecreatefromjpeg("bilder/4-screen.jpg"); 
ImageCopyResampled($image, $image4,800,600,0,0,800,600,800,600); 
ImageDestroy($image4); 

imagejpeg($image,"bilder/thumbs/screen-1.jpg",80); 
    @chmod('bilder/thumbs/screen-1.jpg', 0777); 
ImageDestroy($image);
 
die vorletzte Angabe mit deinen 800, 600 ist die der Punkt, bis wohin das eingefügte Bild gehen soll und wenn ich bei jedem Bild 800,600 angebe, packt er mir doch jedes Bild bis in die unterste rechte Ecke, was ja nicht sein soll.

Ich will alle 4 Bilder auf das eine Bild verteilen, also das erste von Punkt 0,0 bis Punkt 400,300. Das 2. von 400,0 bis 800,300 u.s.w.
 
so habe hier mal ein Bild wie die Ausgabe erfolgt:

***


und so soll es aussehen:

****


Die Werte habe ich ja eigentlich richtig angegeben meines Erachtens.
 
Zuletzt bearbeitet:
Original geschrieben von low-group
Die Werte habe ich ja eigentlich richtig angegeben meines Erachtens.
Nicht ganz:
PHP:
<?
$image = imagecreatetruecolor(800,600); 

$image1 = imagecreatefromjpeg("bild1.jpg"); 
ImageCopyResampled($image, $image1,0,0,0,0,400,300,800,600); 
ImageDestroy($image1); 

$image2 = imagecreatefromjpeg("bild2.jpg"); 
ImageCopyResampled($image, $image2,400,0,0,0,400,300,800,600); 
ImageDestroy($image2); 

$image3 = imagecreatefromjpeg("bild3.jpg"); 
ImageCopyResampled($image, $image3,0,300,0,0,400,300,800,600); 
ImageDestroy($image3); 

$image4 = imagecreatefromjpeg("bild4.jpg"); 
ImageCopyResampled($image, $image4,400,300,0,0,400,300,800,600); 
ImageDestroy($image4); 

imagejpeg($image,"screen-1.jpg",80); 
echo "<img src=\"screen-1.jpg\">";
ImageDestroy($image);

?>
So geht's... wenn Du mal die Werte vergleichst, siehst Du, woran es gelegen hat.

MfG
Hans
 
jo thx so geht das.

Ich war immer der Annahme, daß der vorletzte Parameter, also die 400,300 der Endpunkt im neuen Bild ist.

Es heißt ja:

int dstX, int dstY, - Anfangspunkt im Zielbild

und

int dstW, int dstH - Endpunkt im Zielbild

nun haben ja alle 4 Bilder den gleichen Endpunkt im Zielbild.

Irgendwie verwirrend das ganze, aber es :-)
 
Zurück