phpbar.de logo

Mailinglisten-Archive

[php] bildbearbeitung beim uploaden

[php] bildbearbeitung beim uploaden

Cyrill Schumacher php_(at)_phpcenter.de
Wed, 6 Jun 2001 09:17:27 +0200


> schau mal hier, auch wenn du nicht direkt Thumnails brauchst, solltest
> du die Skripte verwenden koennen.
>
> http://www.php-center.de/beitraege/detail.php?a_id=34
>

meinen senf muss ich auch noch dazu geben:

leider hat das ding irgendwie eine macke und zwar folgende:
bei diversen providern läuft GD in der Version "1.6.2 or higher"
wenn ich nun ein JPEG Bild klein rechnen möchte und dieses
via dateinamen speichern will, dann gibt der säckel (php)
mir das bild einfach im Browser aus. selbst jegliches eingebautes
echo etc. wird ignoriert. Bei anderen Bildformaten wie GIF, PNG, (TIFF)
funktioniert die Ausgabe als Datei prächtig.
Wenn einer eine Lösung weiss, dann bitte mir schreiben.

Unteres script funktioniert auch ohne gdlib, aber auch nur
dann wenn ImageMagick installiert ist :-)

<?php

// if height or width is 0 then it will be calculated correctly.
$small_img_height = 100;
$small_img_width = 0;
$big_img = "linzbach.135868.jpg";
$small_img = "linzbach.klein.jpg";


/*****************************************/
exec("which convert",$a);
$cpath = $a[0];

preg_match("=.*(\.[a-z]+)$=",$big_img,$extension);
$extension_big = str_replace(".","",$extension[1]);

preg_match("=.*(\.[a-z]+)$=",$small_img,$extension);
$extension_small = str_replace(".","",$extension[1]);

// eval("function imagecreatefrom".$extension_big."() ...")

function imagecreatefromjpg($img){ return imagecreatefromjpeg($img); }
function imagejpg($img){ return imagejpeg($img); }

$fncCreate = "ImageCreateFrom$extension_big";
$fncSend = "Image$extension_small";

 $big_img_sz = getimagesize($big_img);

 if($small_img_height <= 0){
  $bip = ( $big_img_sz[1] / $big_img_sz[0] );   // 1 ist height - 0 width
  $small_img_height = round($small_img_width * $bip);
 }
 if($small_img_width <= 0){
  $bip = ( $big_img_sz[0] / $big_img_sz[1] );   // 1 ist height - 0 width
  $small_img_width = round($small_img_height * $bip);
 }

 $my_img = _(at)_$fncCreate($big_img);

 if($my_img == false && $cpath != ""){
  $pic_lowres = $small_img_width."x".$small_img_height;  // max. Trumbnail
  $pic_quality = "50";            // JPEG-Quality in %
  exec($cpath." -geometry ".$pic_lowres." -quality ".$pic_quality."
".$big_img." ".$small_img,$res);
  echo $small_img;
 }elseif($my_img != false ){
  $sm_img = imagecreate($small_img_width,$small_img_height);

imagecopyresized($sm_img,$my_img,0,0,0,0,$small_img_width,$small_img_height,
$big_img_sz[0],$big_img_sz[1]);
  $ri = $fncSend($sm_img,$small_img,0.5);
  imagedestroy($sm_img);
  imagedestroy($my_img);
  echo $small_img;
    // return $small_img
 }else{
  echo false;
    // return false;
 }

?>

kiri




php::bar PHP Wiki   -   Listenarchive