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.

Die einzige vernünftige Lösung ist folgende: (Auch wenn noch nicht optimal)

In der Datei \conf\userstyle.css folgendes hinzufügen:
Sollte es Probleme bei der Anzeige geben, dann die Filter Befehle weg lassen!

.dokuwiki img.media {
	/* Bild schärfen */
	image-rendering: -moz-crisp-edges;         /* Firefox */
	image-rendering:   -o-crisp-edges;         /* Opera */
	image-rendering: -webkit-optimize-contrast;/* Webkit (non-standard naming) */
	image-rendering: crisp-edges;
	-ms-interpolation-mode: nearest-neighbor;  /* IE (non-standard property) */
							
        /* helligkeit und Konrast verbessern */
	-webkit-filter: brightness(1.1) contrast(1.3);
	filter: brightness(1.1) contrast(1.3);
}



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;
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
wiki_anleitung (86 views) · Zuletzt geändert: 16/09/2021 14:43 von conny