Bild auf verschiedene Formate verkleinern

idoby

Grünschnabel
Guten Abend,

ich beschäftige mich seit ein paar Tagen mit dem Upload und der anschließenden Verkleinerung von Bildern. Bin bisher auch zu den gewünschten Ergebnissen gekommen, allerdings möchte ich jetzt, dass das hochgeladene Bild in zwei verschiedene Formate bzw. Größen umgewandelt wird. Und da liegt das Problem. Hiermit klappt alles perfekt:

PHP:
$ordner = "/pics"; //In den Ordner wird das Bild geladen
$action = $_GET['action'];

if($action == upload){

## Daten holen
$bild = $_FILES['cover']['tmp_name'];
$bild2 = $_FILES['cover']['tmp_name'];
$bild_name = $_FILES['cover']['name'];

$dest = $ordner."/".$bild_name;
$dest2 = $ordner."/tn_".$bild_name;


$size= GetImageSize("$bild");
$breite=$size[0];
$hoehe=$size[1];
$neueBreite=100;
$neueHoehe=100;

$altesBild= ImageCreateFromJPEG("$bild");
$neuesBild= imagecreateTrueColor($neueBreite,$neueHoehe);
 imageCopyResampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
 ImageJPEG($neuesBild,"$dest");
 echo "angekommen";

möchte ich jetzt allerdings um das hier erweitern:

PHP:
$neueBreite2=50;
$neueHoehe2=50;

$altesBild2= ImageCreateFromJPEG("$bild2");
$neuesBild2= imagecreateTrueColor($neueBreite2,$neueHoehe2);
 imageCopyResampled($neuesBild2,$altesBild2,0,0,0,0,$neueBreite2,$neueHoehe2,$breite,$hoehe);
 ImageJPEG("$neuesBild2","$dest2");
 echo "angekommen 2";

Kommt es zum Fehler:
Warning: imagejpeg(): supplied argument is not a valid Image resource

in der Zeile
PHP:
 ImageJPEG("$neuesBild2","$dest2");

Okay - irgendwie verständlich. Schließlich wurde das Bild quasi schon "verbraucht". Aber wie kann ich trotzdem damit weiterarbeiten?!

Viele Grüße
 
Zuletzt bearbeitet:
Nur grob überflogen, aber die Ressource "tn_$neuesBild2" gibt es nicht.
PHP:
ImageJPEG($neuesBild2,$dest2);
 
Zuletzt bearbeitet:
Mist, das war noch ein Überbleibsel aus einem anderen Versuch. Aber auch wenn ich jetzt das geändert habe, ändert das nichts an der Meldung :(
 
Da auch mal noch die Anführungszeichen weg:
PHP:
$altesBild2= ImageCreateFromJPEG($bild2);

Du solltest dir ausserdem noch Gedanken über das Seitenvehältnis der Bilder machen, da die ja nicht immer 1:1 sein werden.

Hier nen unkommentierter Schnippsel
PHP:
$tsize = 150; // maximale Höhe bzw. Breite des Thumbnails
$new_w = $tsize;
$new_h = $tsize;

$old_x=imageSX($src_img);
$old_y=imageSY($src_img);

if ($old_x > $old_y) {
	$thumb_w=$new_w;
	$thumb_h=$old_y*($new_h/$old_x);
}
if ($old_x < $old_y) {
	$thumb_w=$old_x*($new_w/$old_y);
	$thumb_h=$new_h;
}
if ($old_x == $old_y) {
	$thumb_w=$new_w;
	$thumb_h=$new_h;
}
 
Es lag tatsächlich nur an den Anführungszeichen...
Für den Codeschnipsel habe ich zwar momentan keine Verwendung (ich möchte tatsächlich nur genau diese Größen), aber in Zukunft wird sich da sicher was mit anfangen lassen.

Dankeschön!
 
Zurück