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