Problem mit Image-Funktionen

Guellekueken

Grünschnabel
Ich habe ein Script, dass Bilder erst auf 400er Breite verkleinert und dann Thumbnails erstellt.
Bei einem Bild kam es vor, dass es nicht verkleinert wurde, obwohl die Größen richtig ermittelt wurden.
Nach einer Verkleinerung mit Photoshop und erneutem Hochladen, funktionierte es, nach nochmaligem Ändern wieder nicht usw.
Das Bild hat eine Größe von 2417x1801. Gibt es da eventuell eine maximale Größe für die PHP-Image-Funktionen?
Hier der Code:
in $imgpfad steht der Pfad zum Bild. Der Code funktioniert auch, aber wie oben beschrieben, klappt das Verkleinern manchmal nicht.
PHP:
$imgdata = getimagesize($imgpfad);
if($imgdata[2]==2){$typ='jpg';}
if($imgdata[2]==3){$typ='png';}
$imgBreite = $imgdata[0]; $imgHoehe = $imgdata[1];      
if($imgBreite>400) {
     $imgHoehe_o = $imgHoehe;
     $imgBreite_o = $imgBreite;
     $faktor = 400 / $imgBreite;
     $imgHoehe = ceil($imgHoehe * $faktor);
     $imgBreite = 400;                          
     if($typ=='jpg'){$imggrafik_o = ImageCreateFromJPEG($imgpfad);}else{$imggrafik_o = ImageCreateFromPNG($imgpfad);}
     $imggrafik = imagecreatetruecolor($imgBreite,$imgHoehe);
     ImageCopyResized($imggrafik,$imggrafik_o,0,0,0,0,$imgBreite,$imgHoehe,$imgBreite_o,$imgHoehe_o);
     if($typ=='jpg'){ImageJPEG($imggrafik,$imgpfad);}else{ImagePNG($imggrafik,$imgpfad);}
}
 
hi ich mache es so:

PHP:
$dlzufallicon_icon = "picfiles/$dlzufallicon";
$size = @getimagesize("$dlzufallicon_icon");


$verringern = "1";
for($a=0; $a<200; $a++) 
{
$breite = "$size[0]" / "$verringern";
$lange = "$size[1]" / "$verringern";
if ("$breite" > "118" or "$lange" > "80") { $verringern = "$verringern" + "0.1"; }
}

$breite = explode('.',$breite);
$breite = $breite[0];
$lange = explode('.',$lange);
$lange = $lange[0];

Versuchs auch mal!

Nachtrag:
Hier wild das Bild Prozentual gleichmässig verändert. Möchtest du ein Feinfühligeren Faktor stezt du
$a<2000
if ("$breite" > "400" or "$lange" > "400") { $verringern = "$verringern" + "0.01"; }

Noch Feinfühliger

$a<20000
if ("$breite" > "400" or "$lange" > "400") { $verringern = "$verringern" + "0.001"; }


Bei einem Bild von einer Fremdurl kann durchaus vorkommen, dass das Bild keinen Size zurückgibt, oder garnicht existiert. Auch hier kannst du dir Abhilfe schaffen!
PHP:
$dlzufallicon_icon = "picfiles/$dlzufallicon"; 
$size = @getimagesize("$dlzufallicon_icon"); 


$verringern = "1"; 
for($a=0; $a<200; $a++) 
{ 
$breite = "$size[0]" / "$verringern"; 
$lange = "$size[1]" / "$verringern"; 
if ("$breite" > "118" or "$lange" > "80") { $verringern = "$verringern" + "0.1"; } 
} 

$breite = explode('.',$breite); 
$breite = $breite[0]; 
$lange = explode('.',$lange); 
$lange = $lange[0]; 
if (!@getimagesize("$dlzufallicon_icon")){ $breite="400";$lange="400"; }

Ntürlich kannst du das Bild garnicht erst laden lassen!

Aber bedenke 1, Bei Fremdurls kann der Script Zeit in den Anspruch nehmen, bis die Daten des Bildes ermittelt wurden. Php muss die auch erst abholen!

Also am besten sparrt man sich Fremde URLs dabei.
 
Zuletzt bearbeitet von einem Moderator:
Zurück