===== 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 // 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 $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;