phpbar.de logo

Mailinglisten-Archive

[php] Klasse gesucht: Bildverkleinerung

[php] Klasse gesucht: Bildverkleinerung

Bastian Haustein bh at plan-i.de
Fre Jan 30 18:57:21 CET 2004


Hi Andreas!

Mal ins Manual geguckt?

unter

 http://de.php.net/manual/de/function.imagecopyresampled.php

findest Du zwei Codeschnipsel, die Du nur zusammn bauen musst:

<?php
//SCHNIPSEL 1:
   $image_details = getimagesize("$dir_name/$image");

   $imagesize_x = $image_details[0];
   $imagesize_y = $image_details[1];

   $thumbsize_x = 100;
   $thumbsize_y = 75;

   // The two lines beginning with (int) are the super important magic
formula part.
   (int)$thumb_x = ($imagesize_x <= $imagesize_y) ? round(($imagesize_x *
$thumbsize_y)/$imagesize_y) : $thumbsize_x;
   (int)$thumb_y = ($imagesize_x > $imagesize_y) ? round(($imagesize_y *
$thumbsize_x)/$imagesize_x) : $thumbsize_y;

   echo "Projected Thumbnail Size to fit within $thumbsize_x x $thumbsize_y
= $thumb_x x $thumb_y";
?>

<?php
//SCHNIPSEL 2:

function image_createThumb($src,$dest,$maxWidth,$maxHeight,$quality=100) {
   if (file_exists($src)  && isset($dest)) {
       // path info
       $destInfo  = pathInfo($dest);

       // image src size
       $srcSize  = getImageSize($src);

       // image dest size $destSize[0] = width, $destSize[1] = height
       $srcRatio  = $srcSize[0]/$srcSize[1]; // width/height ratio
       $destRatio = $maxWidth/$maxHeight;
       if ($destRatio > $srcRatio) {
           $destSize[1] = $maxHeight;
           $destSize[0] = $maxHeight*$srcRatio;
       }
       else {
           $destSize[0] = $maxWidth;
           $destSize[1] = $maxWidth/$srcRatio;
       }

       // path rectification
       if ($destInfo['extension'] == "gif") {
           $dest = substr_replace($dest, 'jpg', -3);
       }

       // true color image, with anti-aliasing
       $destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
       imageAntiAlias($destImage,true);

       // src image
       switch ($srcSize[2]) {
           case 1: //GIF
           $srcImage = imageCreateFromGif($src);
           break;

           case 2: //JPEG
           $srcImage = imageCreateFromJpeg($src);
           break;

           case 3: //PNG
           $srcImage = imageCreateFromPng($src);
           break;

           default:
           return false;
           break;
       }

       // resampling
       imageCopyResampled($destImage, $srcImage, 0, 0, 0,
0,$destSize[0],$destSize[1],$srcSize[0],$srcSize[1]);

       // generating image
       switch ($srcSize[2]) {
           case 1:
           case 2:
           imageJpeg($destImage,$dest,$quality);
           break;

           case 3:
           imagePng($destImage,$dest);
           break;
       }
       return true;
   }
   else {
       return false;
   }
}

?>


----- Original Message -----
From: "Andreas Brandl" <mail at andreas-brandl.de>
To: "'deutschsprachige PHP-Mailingliste'" <php at phpbar.de>
Sent: Friday, January 30, 2004 6:29 PM
Subject: [php] Klasse gesucht: Bildverkleinerung


Hallo Liste!

Ich bin auf der Suche nach einer Klasse/Bibliothek, mit der ich schnell und
einfach JPEG-Bilder verkleinern kann.

Ich möchte im Prinzip aus einem BLOB (mit den Bilddaten) aus einer
Datenbank, Vorschaubilder generieren und diese im Filesystem abspeichern.

Sollte möglichst einfach gehen, am besten:
Maximale Höhe, maximale Breite für Vorschaubild angeben, ausführen,
fertig...


Was würdet ihr mir empfehlen?

Ich arbeite auf einem Server von Domainfactory.
PHP 4.3.4
GD 2.0.15

Danke!
Andi

--
** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
Informationen: http://www.phpbar.de
http://lists.phpbar.de/mailman/listinfo/php



php::bar PHP Wiki   -   Listenarchive