拡大リサイズされる環境
CentOS
CentOS Linux release 7.4.1708 (Core)
Nginx
sbin/nginx -V nginx version: nginx/1.12.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx-1.12.0 --conf-path=/usr/local/nginx/etc/nginx.conf --with-http_ssl_module --without-http_ssi_module --with-http_stub_status_module --with-http_v2_module --with-http_image_filter_module=dynamic --with-http_perl_module=dynamic --add-module=/usr/local/src/ngx_small_light
ImageMagick
convert --version Version: ImageMagick 6.9.9-35 Q16 x86_64 2018-02-20 http://www.imagemagick.org Copyright: © 1999-2018 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: Cipher DPC Modules OpenMP Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms ltdl lzma openexr pangocairo png ps raw rsvg tiff webp wmf x xml zlib
現象
元画像サイズ
幅:800px
縦:400px
細かい設定は省きますが、例えばsmall_lightの設定が下記だった場合、
# ngx_small_light を有効にする small_light on; # パターン設定 small_light_pattern_define lsize dw=1280,da=l,q=75,e=imagemagick,jpeghint=y,rmprof=y; small_light_pattern_define msize dw=640,da=l,q=65,e=imagemagick,jpeghint=y,rmprof=y;
msizeだとdwの設定値:640より、元画像の幅:800の方が大きいため、small_lightにより幅:640(縦は縦横比を保ったまま計算されます)に縮小リサイズされ表示されます。
そしてlsizeだと、dwの設定値:1280の方が元画像の幅:800より大きいため、small_lightのデフォルトでは無視され、元画像のままで表示されるのが正解になります。
ですが実際は元画像が幅:1280(縦は縦横比を保ったまま計算されます)に拡大リサイズされて表示される現象がおきます。
因みに
CentOS release 6.9 (Final)
の環境にNginx、ImageMagickのバージョン、small_lightの設定も全く同じで検証すると、想定通りlsizeでは拡大リサイズされずに表示されます。
またImageMagickのコマンドとしてidentify
というものがあり、引数で指定した画像ファイルの種類や画素数など調べれるコマンドがあります。
それぞれのサーバに検証用画像をアップロードしidentify
コマンドで確認してみても、結果は同じでした。
identify 001.jpg 001.jpg JPEG 2144x1329 2144x1329+0+0 8-bit sRGB 2.64004MiB 0.000u 0:00.000
もう丸3日くらいこれでハマっているのですが、正直お手上げ状態です。
どなたかアドバイス、ご教授頂ければ幸いです(涙