Page 1 of 1

Image scaling for product images

Posted: 13 Nov 2017, 11:09
by Dennis
Hi,

as you know, the starting point for the image scaling of product images is the scheduler task "Rescale product images". This task leads to calling the method imagescale within the file typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/lib/mwlib/src/MW/Media/Image/Standard.php.

In this context, we have experienced in our system that calling the method imagescale within the method public function scale( $width, $height, $fit = true ) within typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/lib/mwlib/src/MW/Media/Image/Standard.php leads to bad quality and a thin black border (to the right and to the bottom). See https://github.com/aimeos/aimeos-core/b ... d.php#L164, please, for the concrete line in the code.

Calling the resample method instead (https://github.com/aimeos/aimeos-core/b ... d.php#L172) leads in our case to much better results.

Therefore, I have the following questions: Do you or some of your customers have experienced similar things concerning the image scaling? Can you imagine some reasons why our results are so bad? Wouldn't it be better to use the resample method resulting in better results? Maybe a configuration option to choose between different image scaling methods could be nice, too.

Besides, I have another question concerning overwriting the core file for the image scaling. I tried to overwrite the core file typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/lib/mwlib/src/MW/Media/Image/Standard.php with a file/class within our custom aimeos extension : withtypo3conf\ext\ourextensionkey\Resources\Private\Extensions\ourextensionkey\lib\custom\src\MW\Media\Image\Customized.php. However, no TypoScript configuration worked so far so that the Customized class was taken instead the Standard class. Is it possible to overwrite the Standard class and how would the TypoScript configuration look like?
(plugin.tx_aimeos.settings.mw.media.image.name = Customized or mw.media.image.name = Customized didn't work so far)

Many thanks for your help in advance!

TYPO3 8.7.7. aimeos 17.10.0, PHP: 7.0.25-1~dotdeb+8.1, Operating system: Unix

Re: Image scaling for product images

Posted: 13 Nov 2017, 15:29
by aimeos
The "Rescale product images" job is only for rescaling if you changed the frontend and need now preview images of different sizes. Product images can be already scaled on upload if you configure this:
- https://aimeos.org/docs/Configuration/C ... s/maxwidth
- https://aimeos.org/docs/Configuration/C ... /maxheight

If the quality of the resample method is higher than the imagescale() method, we should remove it in favor of resampling. Are you able to create a pull request on Github for this?

GDLib is known for worse results than e.g. Imagemagick. Therefore, there's an alternative implementation of the media image class called "Imagick" which you can use if your server has installed Imagemagick:
https://aimeos.org/docs/Configuration/C ... rd/options

The configuration for this must be:

Code: Select all

['image' => ['name' => 'Imagick']]
We've updated the documentation in the code so this will be added to the configuration description next time:
https://github.com/aimeos/aimeos-core/c ... 0195347134

Re: Image scaling for product images

Posted: 16 Nov 2017, 13:02
by Dennis
Thank you!

The rescaling when uploading works when having the following configuration, for example (as you mentioned):

module.tx_aimeos.settings.controller.common.media.standard.preview.maxwidth = 620
module.tx_aimeos.settings.controller.common.media.standard.files.maxwidth = 1024

You are totally right. I had a bad configuration that did not work.

I will deal with the other things a bit later, but tell you then. :) Thank you for the advice concerning the configuration.

Re: Image scaling for product images

Posted: 23 Aug 2018, 19:12
by stiller
hi there.

stumpled upon this thread as I'm experiencing the issue with black borders (right and bottom) as well.
is this the right scheduler typoscript to switch to imagemagick?

Code: Select all

controller.common.media.standard.options.image {
name = Imagick
jpeg.quality = 80
}
any other settings available?

@Dennis: how exactly did you solve the black border issue?

cheers
Volker

Re: Image scaling for product images

Posted: 23 Aug 2018, 19:28
by aimeos
The black borders are sometimes produced by GD and if you switch to Imagemagick, the problem should go away. The correct quality setting is

Code: Select all

controller.common.media.standard.options.image {
    name = Imagick
    quality = 80
}