JPG Bilder verkleinern und mehr komprimieren

B

ByeBye 8492

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
 
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.
 
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 :D
 
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:
PHP:
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);
 
Zurück