Dies ist eine alte Version des Dokuments!
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
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); }
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;