Amazon.co.jpから画像を呼び出す際に、
http://images-jp.amazon.com/images/P/XXXXXXXXXX.09._SL160_.jpg
このような形式でアクセスできることは周知の事実だが、この画像の有無で表示する内容を変える方法(PHP)をメモ。
* 他人さまに教えられるレベルではないので個人的なメモ
この方法は次のような場合で利用価値がある。
基本的には、何かしらの理由でASINだけわかっている場合に使える。
- Amazon Webサービスで呼び出した画像(Images)を利用せず、上に挙げたような形式で画像を呼び出す場合
- Amazon WebサービスのItemLookupなどのResponseGroup=Similaritiesから得た情報で画像を呼び出す場合
- 上記以外でASINがわかっている場合
Amazon.co.jpは、上に挙げたURLで画像にアクセスすると、画像がある場合はその画像を表示し、ない場合は、1px X 1pxのダミー画像(.gif)を表示する。画像がない場合にその場所が「空」にならないような配慮だろう。しかし、画像がない場合は、自前の「No Image」を出したい場合もある。
そんなときは、PEARのHTTP_Requestを使ってContent-Typeを調べ「image/jpeg」の場合は本来の画像を表示し、そうでない場合は「No Image」を表示させる。
require_once 'HTTP/Request.php';
// リクエストを行うURLの指定
$url = 'image-url';
$option = array(
'timeout' => 60, // タイムアウトの秒数指定
);
// HTTP_Requestの初期化
$http = new HTTP_Request($url, $option);
$response = $http->sendRequest();
if (!PEAR::isError($response)) {
$header = $http->getResponseHeader();
$contentType = $header['content-type'];
if ($contentType === 'image/jpeg') {
// 画像を表示
} else {
// No Imageを表示
}
}
ただし、まれにダミー画像が.jpgの場合があるので、その場合は泣くしかない。
個人的には、利用頻度が高い。