Amazonの画像を加工する

加工した画像

「俺流amazonの作り方(asin:4756146759)」の中に、アマゾンの商品画像について触れている部分があります。それ自体はAmazonWebサービスとは直接関係無いのですが、Amazonの画像がどうやら動的に生成しているものらしく、URL内でパラメータを指定することで、割引のマークをつけたり、拡大縮小や回転、ぼかし、「なか見!検索」のマークなど、さまざまな加工が可能になるというものです。
元ネタは以下のページなので、詳しいパラメータとかはこちらを参照してください。
Abusing Amazon images
で、画像加工を簡単に行ってURLを生成してくれるモジュールを作って上記書籍に掲載したので、以下のページからもダウンロードできるようにしてみました。
http://www.takaaki.info/book/amazon/
AMAZON_Image.pm」というモジュールがそれで、たいしたものではないんですが、以下のような感じでASINコードと行いたい加工を指定すると、URLを自動生成してくれるというものです。

#!/usr/bin/perl
use strict;
use warnings;
use AMAZON_Image;

my $image = AMAZON_Image->new(
    asin => '4886487467',
);
$image->resize(30);
for my $count ( 1..4 ){
    $image->discount_right($count*3);
    $image->roll_left(20);
}
$image->shadow;
print $image->url;

変な画像が簡単に作れて面白いです。上記の結果出力されるURLはこんな感じです。

http://images-jp.amazon.com/images/P/4886487467.09._AA30_PE03_PU20_PE06_PU20_PE09_PU20_PE12_PU20_PB_SCMZZZZZZZ_.jpg

処理は指定した順に行われるので、同じ処理でも呼び出した順番によって出来上がる画像は変化します。ただ、あまりたくさんの加工を指定すると、Amazonのサーバがエラーを起こすので、数個にとどめたほうが無難です。
ECSで取得した画像は、たとえAmazonでは割引販売していたとしても、割引マークはついていないので、オファー情報から割引率を算出したら、画像URLを加工して表示する、というのも手かもしれません。
ちなみにAmazonのライブリンクなんかでも、画像を縮小して表示するためにこの機能が使われています。Amazonの画像は結構サイズがばらばらなので、それをそろえて表示するためにも、便利な機能です。