#1600 closed Erweiterung (fixed)
Thumbnails schärfen, damit Details nicht untergehen
| Reported by: | p3e | Owned by: | somebody |
|---|---|---|---|
| Priority: | normal | Milestone: | modified-shop-2.0.6.0 |
| Component: | Admin | Version: | 2.0.4.2 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description (last modified by )
Im Forum gibt es eine praktikable Lösung damit Details beim berechnen der Thumbnails nicht verloren gehen:
Das ist sinnvoll, wenn es ein Produkt in verschiedenen Designs gibt. Ohne Nachschärfen der Thumbnails kann der Kunde bei manchen Produkten ohne die Erweiterung im der Listenansicht gar keinen Unterschied sehen. Beispiel: blaues Kleid uni und blaue Kleid mit kleinen weißen Punkten.
Ich würde gerne anregen, dass das in die neue Version mit aufgenommen wird.
Attachments (2)
Change History (20)
comment:2 by , 7 years ago
Nachtrag 2: der Name ist natürlich Karsta und nicht Kasta (sorry und Asche auf mein Haupt).
comment:3 by , 7 years ago
Der Code kommt mir irgendwie bekannt vor, aber ich finde die angehängte Lösung von web28 irgendwie eleganter.
Soweit ich mich erinnere gab es da aber Einwände das nicht generell für alle zu übernehmen... Ich erinnere mich nur noch mehr dran wieso das nicht für jeden Sinn macht. Vielleicht fällt ja jemandem ein Einwand ein?
by , 7 years ago
| Attachment: | image_sharpen.zip added |
|---|
comment:4 by , 7 years ago
Eleganter weil die Shärfe-Matrix in ein File ausgelagert wurde ?
Wenn editierbar dann gehört's imho wegen Update-Sicherheit gleich in's Backend.
Ansonsten kann ich einen Grund für ein Include anstelle des Codes direkt im File nicht sehen (was heißt denn "eleganter" ?). Jedes Include erhöht den Workload und macht PHP am Ende langsamer.
Welchen Grund es geben sollte, daß die Qualitätsverbesserung,
und als eine solche sehe ich das Schärfen der Bilder an,
nicht für jeden Sinn machen sollte ist mir schleierhaft.
Gruß,
noRiddle
comment:5 by , 7 years ago
| Description: | modified (diff) |
|---|
comment:8 by , 6 years ago
Wir haben das umgestellt auf auto_include und schärfen nicht mehr standardmäßig, da das nicht immer den gewünschten Effekt bringt.
Eine mögliche "/admin/includes/extra/modules/image_sharpen/10_image_sharpen.php" sieht wie folgt aus:
<?php
$sharpen_arr = array(
// Image Enhance:
// Source: http://designstacks.net/convolution-matrix
array(0.0, -2.0, 0.0),
array(-2.0, 20.0, -2.0),
array(0.0, -2.0, 0.0)
);
$offset = -40;
$divisor = 10;
if ($this->q > 1) $sharpen = true;
?>
Oder aber
<?php
$sharpen_arr = array(
// Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
array(-1.2, -1, -1.2),
array(-1.0, 20, -1.0),
array(-1.2, -1, -1.2)
);
$offset = 0;
//$divisor = 10;
if ($this->q > 1) $sharpen = true;
?>
Weitere mögliche sharpen arrays:
// Alternative sharpen:
// Source: https://www.bestwebframeworks.com/tutorials/php/5/sharp-images-with-gd/
array(-1, -1, -1),
array(-1, 16, -1),
array(-1, -1, -1),
// Alternative sharpen:
// Source: http://www.roborealm.com/help/Convolution.php
array(-1, -1, -1),
array(-1, 9, -1),
array(-1, -1, -1),
// Alternative sharpen:
// Source: http://adamhopkinson.co.uk/blog/2010/08/26/sharpen-an-image-using-php-and-gd/
array(0.0, -1.0, 0.0),
array(-1.0, 5.0, -1.0),
array(0.0, -1.0, 0.0)
comment:9 by , 6 years ago
Warum habt Ihr in der 2.0.5.0 in /admin/includes/classes/image_manipulator_GD2_advanced.php zwar eine neue Methode sharpen() und dort ein auto_include() eingebaut, die Verwendung der Methode selbst aber ist in der Klasse auskommentiert ?
Vergessen, oder geplantes Feature, oder raff ich nix ?
Gruß,
noRiddle
comment:11 by , 6 years ago
Inwiefern ?, ich hab' schon alles gelesen.
Ich sage es nochmals, die Methode wird in der Klasse nicht verwendet.
Oder du sagst mir wo ?
Wir reden ja nicht vom Filemaneger sondern vom Imageprozessor.
Gruß,
noRiddle
comment:12 by , 6 years ago
Jetzt sehe ich was du meinst. Die Verwendung der Methode wurde wohl sogar von mir in r12079 auskommentiert. Ich kann mich da aber beim besten Willen nicht dran erinnern die Datei derart bereinigt zu haben.
Das schauen wir uns nochmal an!
Weitere mögliche Schärfungs-Presets aus der "/admin/includes/modules/filemanager/include/php_image_magician.php" (Der Responsive FileManager scheint beim Upload auch automatisch nachzuschärfen):
## --------------------------------------------------------
private function sharpen()
# Author: Jarrod Oberto
# Date: 08 04 2011
# Purpose: Sharpen image
# Param in: n/a
# Param out: n/a
# Reference:
# Notes:
# Credit: Incorporates Joe Lencioni (August 6, 2008) code
{
if (version_compare(PHP_VERSION, '5.1.0') >= 0)
{
// ***
if ($this->aggresiveSharpening)
{ # A more aggressive sharpening solution
$sharpenMatrix = array( array( -1, -1, -1 ),
array( -1, 16, -1 ),
array( -1, -1, -1 ) );
$divisor = 8;
$offset = 0;
imageconvolution($this->imageResized, $sharpenMatrix, $divisor, $offset);
}
else # More subtle and personally more desirable
{
$sharpness = $this->findSharp($this->widthOriginal, $this->width);
$sharpenMatrix = array(
array( -1, -2, -1 ),
array( -2, $sharpness + 12, -2 ), //Lessen the effect of a filter by increasing the value in the center cell
array( -1, -2, -1 )
);
$divisor = $sharpness; // adjusts brightness
$offset = 0;
imageconvolution($this->imageResized, $sharpenMatrix, $divisor, $offset);
}
}
else
{
if ($this->debug)
{
throw new Exception('Sharpening required PHP 5.1.0 or greater.');
}
}
}
## --------------------------------------------------------
private function findSharp($orig, $final)
# Author: Ryan Rud (http://adryrun.com)
# Purpose: Find optimal sharpness
# Param in: n/a
# Param out: n/a
# Reference:
# Notes:
#
{
$final = $final * (750.0 / $orig);
$a = 52;
$b = -0.27810650887573124;
$c = .00047337278106508946;
$result = $a + $b * $final + $c * $final * $final;
return max(round($result), 0);
}
comment:13 by , 6 years ago
| Milestone: | modified-shop-2.0.5.0 → modified-shop-2.0.5.1 |
|---|
by , 6 years ago
| Attachment: | changeset_12516.zip added |
|---|
comment:15 by , 5 years ago
Ich würde den Kommentar in /admin/includes/classes/image_manipulator_GD2_advanced.php
ändern von
/*
* example
*
$sharpen_arr = array(
array(-1.2, -1, -1.2),
array(-1.0, 20, -1.0),
array(-1.2, -1, -1.2)
);
// calculate the sharpen divisor
$divisor = array_sum(array_map('array_sum', $sharpen_arr));
$offest = 0;
*/
zu
/*
* example - put a file named 10_image_sharpen.php in /admin/includes/extra/modules/image_sharpen with code like this to sharpen images smaller than 400px
*
<?php
$sharpen_arr = array(
// Default sharpen: https://www.php.net/manual/de/function.imageconvolution.php#104006
array(-1.2, -1, -1.2),
array(-1.0, 20, -1.0),
array(-1.2, -1, -1.2)
);
// calculate the sharpen divisor
$divisor = array_sum(array_map('array_sum', $sharpen_arr));
$offset = 0;
if ($this->q < 400) $sharpen = true;
?>
*/
Das würde es verständlicher machen, da man auch annehmen könnte die Änderungen direkt in der /admin/includes/classes/image_manipulator_GD2_advanced.php vorzunehmen.
comment:16 by , 5 years ago
Und es fehlen im Bsp die Php-Tags sowie eine Zeile die $sharpen = true setzt wie zb
if ($this->q < 400) $sharpen = true;
Das werden Normaluser nicht hinbekommen, die die Bsp Codes aus dem Ticket nicht kennen.
comment:18 by , 5 years ago
| Milestone: | modified-shop-2.0.5.1 → modified-shop-2.0.5.2 |
|---|

Nachtrag: hier der direkte Link zur Codeerweiterung von Karsta: Bildqualität Thumbnails