Bildas verkleinern

GErD

Mitglied
hi,

kann ich mit PHP bilder verkleinern?
ich weiß das kann man auch mit
PHP:
<img src="bla.jpg" height="20" width="10"
aber dann müsste man immer das bild ganz einlesen und das will ich nicht.

thx for helps
 
Hallo,

hab die dafür folgenden Script:

PHP:
  $PicPathIn="images/"; 
  $PicPathOut="images/"; 
  // Orginalbild 
  $bild=$upload_file; 
  // Bilddaten feststellen 
  $size=getimagesize("$PicPathIn"."$bild"); 
  $breite=$size[0]; 
  $hoehe=$size[1]; 
  $neueBreite=50; 
  $neueHoehe=intval($hoehe*$neueBreite/$breite); 

  if($size[2]==1) { 
  // GIF 
  $altesBild=ImageCreateFromGIF("$PicPathIn"."$bild"); 
  $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
$neueHoehe,$breite,$hoehe); 
  ImageGIF($neuesBild,"$PicPathOut"."tn"."$bild"); 
  } 

  if($size[2]==2) { 
  // JPG 
  $altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild"); 
  $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
$neueHoehe,$breite,$hoehe); 
  ImageJPEG($neuesBild,"$PicPathOut"."tn"."$bild"); 
  } 

  if($size[2]==3) { 
  // PNG 
  $altesBild=ImageCreateFromPNG("$PicPathIn"."$bild"); 
  $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
  ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
$neueHoehe,$breite,$hoehe); 
  ImagePNG($neuesBild,"$PicPathOut"."tn"."$bild"); 
  }

Die neuen Bilder haben dann den gleichen Namen mit "tn" vorangesetzt.
Die Größe kannst du in dem Script angeben.

Seh nach ob dein Provider auch die GD Lib installiert hat.
Die meisten haben das aber aktiviert, nur bei .gif sieht es bei den meisten etwas dürftig aus, da hier Lizenzkosten zu bezahlen sind.


Gruß

Andreas
 
Das Script funzt zwar ganz gut, aber wenn die JPG fehlerhaft sind (das merkt man meistens gar nicht, ich meine wenn der Header nicht korrekt ist) kommt eine sch** Fehlermeldung.

$befehl="jpegtopnm ".$absolutpicpath.$bild." > test.pnm";
system ($befehl, $r);
if ($r != 0) {
echo "<p>Die Bilddatei ist fehlerhaft und kann daher nicht automatisch verkleinert werden.</p>\n";
}

Steht aber auch im php-manual-Forum :-)
 
Bei neuere PHP-Versionen tritt der Fehler auf, dass die Thumbnails starke Farbverfälschungen haben. PHP behandelt die Bildfunktionen anders. Ich benutze auch das oben genannte Script. Man sollte jedoch alles mit
PHP:
$neuesBild=ImageCreate($neueBreite,$neueHoehe);
durch
PHP:
$neuesBild=ImageCreateTrueColor($neueBreite,$neueHoehe);
ersetzen.
 
Original geschrieben von workaholic
Bei neuere PHP-Versionen tritt der Fehler auf, dass die Thumbnails starke Farbverfälschungen haben. PHP behandelt die Bildfunktionen anders. Ich benutze auch das oben genannte Script. Man sollte jedoch alles mit
PHP:
$neuesBild=ImageCreate($neueBreite,$neueHoehe);

durch
PHP:
$neuesBild=ImageCreateTrueColor($neueBreite,$neueHoehe);

ersetzen.


Aha, auch wieder was dazugelernt. Hab das auch schon bei manchen Bildern gesehen, und auch immer nach Einstellmöglichkeiten gesucht.

Hab aber eben gesehen, dass dazu die GD Lib mit einer Versionsnummer
von mindestens 2.0 installiert sein muss.

Bei der GD 1.6.2 die ich installiert habe, kommt es dabei leider zu einem Fehler.


Gruß

Andreas
 
Original geschrieben von SwingerLive
Aha, auch wieder was dazugelernt. Hab das auch schon bei manchen Bildern gesehen, und auch immer nach Einstellmöglichkeiten gesucht.

Hab aber eben gesehen, dass dazu die GD Lib mit einer Versionsnummer
von mindestens 2.0 installiert sein muss.

Bei der GD 1.6.2 die ich installiert habe, kommt es dabei leider zu einem Fehler.


Gruß

Andreas

Stimmt, das mit der Version 2.0 hab ich vergessen zu erwähnen. Ich hatte dieses Problem erst vor ein paar Tagen. Ich war sehr überrascht, dass mir der Support von Hosteurope am Ostersonntag in weniger als 30 Minuten auf meine eMail-Anfrage geantwortet hat. Bisher konnte ich mich immer so innerhalb von 2 Wochen auf eine Antwort freuen. :-)
 
Zurück