DTP従事者がついうっかりやってしまうCMYK-JPEGのままアップされた画像で、ちゃんとブラウザで表示できるサムネイル画像を作る
ええと、
をWindowsのOperaで見ると、添付画像のサムネイルがまっくろくろ助なわけです。Opera、CMYKのJPEGイメージに対応してないのですね……
イメージを名前をつけて保存して、Windows画像とFAXビューアで見たら表示できるんですけれども、それでは、サムネイルの意味ないです。
というわけで、サムネイルを作るときに使われる定番のImageMagickの使い方で、何とかする方法。
$img->Set(colorspace => 'RGB');ていう書き方で、CMYKのイメージでもRGBにしちゃいましょう!
今回のは、
Image::Magick を使って大量画像のサムネイル画像を一括自動生成 - drk7jp
を参考にしつつ、Windows XPのExplorer風のサムネイルを生成することを目標にしたよ。
Filename: image2cmykjpeg_thumbnail.pl
#!/usr/bin/perl use strict; use warnings; use File::Basename; use Image::Magick; _thumbnail('eroero.jpg'); exit; sub _thumbnail { my $RESIZE_X = 85; my $RESIZE_Y = 85; my $filepath = shift; # 画像縮小 my $img = Image::Magick->new; $img->Read($filepath); $img->Set(colorspace => 'RGB'); $img->Set(quality => 90); my ( $x, $y ) = $img->Get( 'width', 'height' ); if ( $x > $y * $RESIZE_X / $RESIZE_Y ) { $img->Thumbnail( width => $RESIZE_X, height => $y / $x * $RESIZE_Y, ); } else { $img->Thumbnail( width => $x / $y * $RESIZE_X, height => $RESIZE_Y, ); } $img->Border( width=>2, height=>2, fill=>'white', ); binmode(STDOUT); my ( $base, $dir, $suffix ) = fileparse( $filepath, qr/\.[^.]*/ ); my $newpath = "$dir${base}_s.jpg"; $img->Write("jpeg:$newpath"); return $newpath; }