Benutzer-Werkzeuge

Webseiten-Werkzeuge


wiki_anleitung:image_resize

Bilder verkleinern

Verkleinerte Bilder werden im Browser etwas unscharf dargestellt.
Ich habe verschiedenes ausprobiert, aber bis jetzt noch keine Möglichkeit der Verbesserung gefunden.

Unter http://packen123.de/img_convert/ findet man ein kleines Testprogramm für ImageMagick

Hier im DokuWiki kann man in der Konfiguration den ImageMagick Path eintragen um ImageMagick zu nutzen.
im_convert: „/usr/bin/convert“

Wenn man die Funktion umprogrammieren will schaut man in die Datei: inc\media.php ab Zeile 2276 function media_resize_imageIM

Drei Lösungsansätze:

1. mit ImageMagick

download
 // check if convert is configured
    if(!$conf['im_convert']) return false;
 
    // prepare command
    $cmd  = $conf['im_convert'];
    $cmd .= ' -filter Lanczos -resize -quality 10 '.$to_w.'x'.$to_h.'!';
    if ($ext == 'jpg' || $ext == 'jpeg') {
        $cmd .= ' -quality '.$conf['jpg_quality'];
    }
 
 
    $cmd .= " $from $to";
 
    @exec($cmd,$out,$retval);
    if ($retval == 0) return true;
    return false;


2. mit PHP

download
$newWidth = $to_w;
$targetFile = $to;
$originalFile = $from;
 
    $info = getimagesize($originalFile);
    $mime = $info['mime'];
 
    switch ($mime) {
            case 'image/jpeg':
                    $image_create_func = 'imagecreatefromjpeg';
                    $image_save_func = 'imagejpeg';
                    $new_image_ext = 'jpg';
                    break;
 
            case 'image/png':
                    $image_create_func = 'imagecreatefrompng';
                    $image_save_func = 'imagepng';
                    $new_image_ext = 'png';
                    break;
 
            case 'image/gif':
                    $image_create_func = 'imagecreatefromgif';
                    $image_save_func = 'imagegif';
                    $new_image_ext = 'gif';
                    break;
 
            default: 
                    throw new Exception('Unknown image type.');
    }
 
    $img = $image_create_func($originalFile);
    list($width, $height) = getimagesize($originalFile);
 
    $newHeight = ($height / $width) * $newWidth;
    $tmp = imagecreatetruecolor($newWidth, $newHeight);
    imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
 
    if (file_exists($targetFile)) {
            unlink($targetFile);
    }
    $image_save_func($tmp, "$targetFile.$new_image_ext",0);
    //if ($retval == 0) return true;
	return false;

der dritte Lösungsansatz ist noch nicht ganz fertig gedacht von mir:

Ich würde die Funktion für die Verkleinerung durch eine Verkleinerung in das WEBP Format durchführen: Z.B.:

Beispiel Syntax:

	exec("cwebp original.png -o ausgabe.webp -lossless -m 6 -q 100  ");

Code Beispiel zum Einbinden in Dokuwiki

$cmd = "cwebp";
$cmd .= " -lossless -m 6 -q 100";
$cmd .= " $from -o $to";
@exec($cmd,$out,$retval);
return true;
Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
wiki_anleitung (30 views) · Zuletzt geändert: 23/12/2020 15:30 von conny