Home > CakePHP | CakePHPで楽天API > [CakePHP] 画像の圧縮比を変えて出力する

[CakePHP] 画像の圧縮比を変えて出力する

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を渡せば、再圧縮されて画像が出力されるというわけだ。

関連記事

Sponsored Link

Google+

facebook

zenback

Comments:0

Comment Form
Remember personal info

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

Home > CakePHP | CakePHPで楽天API > [CakePHP] 画像の圧縮比を変えて出力する

Subscribe This Blog
Subscribe This Blog
FeedBurner

Search
Categories
Tag Cloud
Twitter Counter
Archives
My Other Blogs
Affiliate Blogs
Translator
Japanese flagEnglish flag

Return to page top