# JPG Bilder verkleinern und mehr komprimieren



## ByeBye 8492 (15. Juni 2003)

Moinsen,

Ich wollte ma wissen ob es theoretisch machbar waere, das ich ein Upload script haette und der Benutzer nen Bild hochlaedt, da es allerdings zu gross ist verkleinert PHP es gleich automatisch ( auf eine FESTGELEGTE Aufloesung). Dann soll das Bild auch noch komprimiert werden ( also die Qualität runtergesetzt werden).

Geht das ueberhaupt?

Kann mir jemand da mal nen paar 'Vorschläge' geben ?

mfG

Muffinmampfer


----------



## Tim C. (15. Juni 2003)

Ja das geht, dazu muss allerdings die GD-Library installiert sein (bei der neuesten PHP Version bereits integriert).
Schau dir mal Tutorials für ein Thumbnail-Erstellungsscript an, das geht in die gleich Richtung.
Am Ende kannst du das ganze dann via imagejpeg ausgeben (http://de.php.net/manual/de/function.imagejpeg.php) wobei du auch die jpeg Qualität angeben kannst.


----------



## ByeBye 8492 (16. Juni 2003)

> _Original geschrieben von leuchte _
> *Ja das geht, dazu muss allerdings die GD-Library installiert sein (bei der neuesten PHP Version bereits integriert).
> Schau dir mal Tutorials für ein Thumbnail-Erstellungsscript an, das geht in die gleich Richtung.
> Am Ende kannst du das ganze dann via imagejpeg ausgeben (http://de.php.net/manual/de/function.imagejpeg.php) wobei du auch die jpeg Qualität angeben kannst. *




Danke ich werde es glatt mal probieren


----------



## brÅinstorm (18. Juni 2003)

du solltest aber keine feste aufloesung nehmen, sondern jeweils maximalbreite und -hoehe festlegen.
Sonst hast du schöön gestreckte hässliche bilder!
bsp für alles:

```
function createimage($width, $height){
    $imgh = imagecreate($width, $height);
    $bgc = imagecolorallocate($imgh, 230, 230, 230);
    return $imgh;
}

$height = 473; //maximalhoehe
$width = 498; //maximalbreite
$img_size = getimagesize($path);
$img_size[4] = $img_size[1]/$height;
$faktor = 100/$img_size[4];
$img_size[1] = $img_size[1]/100;
$img_size[0] = $img_size[0]/100;
$img_size[1] = $img_size[1]*$faktor;
$img_size[0] = $img_size[0]*$faktor;

if($img_size[0] >= $width) {
    $img_size[4] = $img_size[0]/$width;
    $faktor2 = 100/$img_size[4];
    if($faktor2 << $faktor) {
        $img_size[1] = $img_size[1]/100;
        $img_size[0] = $img_size[0]/100;
        $img_size[1] = $img_size[1]*$faktor2;
        $img_size[0] = $img_size[0]*$faktor2;
    }
}

$imgh = createimage($img_size[0], $img_size[1]);
$imgh2 = imagecreatefromjpeg($path);
$imgsz = getimagesize($path);
$black = imagecolorallocate($imgh2, 0, 0, 0);

imagecopyresized($imgh, $imgh2, 0, 0, 0, 0, $img_size[0], $img_size[1], $imgsz[0], $imgsz[1]);

imagejpeg($imgh, $path, 90);

imagedestroy($imgh);
```


----------

