CentOS7でsmall_lightを使うとdwオプションで拡大リサイズされる

ショックをうけてるイメージ画像

※当ブログでは商品・サービスのリンク先にプロモーションを含みます。ご了承ください。

拡大リサイズされる環境

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日くらいこれでハマっているのですが、正直お手上げ状態です。

どなたかアドバイス、ご教授頂ければ幸いです(涙