- 2009/03/10 13:44
- CakePHP | CakePHPで楽天API
CakePHPと楽天APIで携帯サイトを作っているのだが、楽天APIで取得できる画像は、携帯用にそのまま表示すると、画像サイズがでかい。1ページあたりに3枚表示するくらいがやっとだ。
なので、CakePHPで画像ファイルの圧縮率を下げるアクションを追加してみた。
まずは、コントローラーに以下のように作ってみた。
app/controllers/convjpgs_controller.php
class ConvjpgsController extends AppController {
var $name = 'Convjpgs';
function down(){
$this->layout = false;
$this->autoRender = false;
header('Content-type: image/jpeg');
$img = imagecreatefromjpeg('http://'.implode('/',$this->params['pass']).'?_ex=128x128');
imagejpeg($img, NULL, 75);
imagedestroy($img);
}
解説すると、$this->layout=false:と$this->autoRender=false;でビューを出力しないようにしている。
次に、header(‘Content-type: image/jpeg’);で画像ファイルを出力するためのMIMEヘッダーを出力。
imagecreatefromjpegでURLとして渡されたJPGのURLをそのままJPGファイルとして読みこみ、
imagejpeg($img, NULL, 75);
で、圧縮比75%で再出力している。
ちなみにビューからは以下のようにURLを指定する。
< ?php echo $html->image('/convjpgs/down/'.$product['smallImageUrl'],array('alt' => $product['itemName']),null,null,false); ?>
アクション、/convjpgs/down/に画像のURLを渡せば、再圧縮されて画像が出力されるというわけだ。
関連記事
- CakePHPで楽天WEBサービスを使う(商品コード検索)
- CakePHPで楽天WEBサービスを使う(データ取得をモデルでやってみる)
- [CakePHP] Cannot modify header information – headers already sent
- [CakePHP] リンク付き画像をヘルパーで表示する方法
- 「CakePHP修行」を追う #8
- [CakePHP] スタイルシートをコントローラーで作ってみる
- [CakePHP] CakePHPは複合キーに対応していない?
- Paginationの代替え表示(CakePHP)
Sponsored Link
Google+
zenback
- Newer: WordPress チュートリアルTOP50
- Older: 楽天アフィリエイト「楽天モーションウィジェット」登場
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.multiburst.net/sometime-php/2009/03/cakephp-jpeg-compression/trackback/
- Listed below are links to weblogs that reference
- [CakePHP] 画像の圧縮比を変えて出力する from Sometime PHP
Additional comments powered by BackType





