DTP従事者がついうっかりやってしまうCMYK-JPEGのままアップされた画像で、ちゃんとブラウザで表示できるサムネイル画像を作る

ええと、

Illustrator DTP PC よろず掲示版

WindowsOperaで見ると、添付画像のサムネイルがまっくろくろ助なわけです。OperaCMYKJPEGイメージに対応してないのですね……

イメージを名前をつけて保存して、Windows画像とFAXビューアで見たら表示できるんですけれども、それでは、サムネイルの意味ないです。

というわけで、サムネイルを作るときに使われる定番のImageMagickの使い方で、何とかする方法。
$img->Set(colorspace => 'RGB');ていう書き方で、CMYKのイメージでもRGBにしちゃいましょう!

今回のは、

Image::Magick を使って大量画像のサムネイル画像を一括自動生成 - drk7jp

を参考にしつつ、Windows XPExplorer風のサムネイルを生成することを目標にしたよ。

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;
}