- ベストアンサー
携帯用に画像のサイズ変更をしたい
MySQLに登録されている画像データを携帯用にリサイズして表示したいのですが、どのような方法があるのでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
PCで投稿された画像をImageMagickで携帯用にリサイズしたことはあります。 便利ですし、けっこう綺麗な画質でリサイズできました。 ImageMagickで検索すればインストール方法や使い方を解説しているサイトが多数出てきますので、お使いのシステムに合わせて調べられてください。
その他の回答 (3)
- みずの(@mizuno3)
- ベストアンサー率73% (192/263)
Niiさんのソースですが、最後にimagedestroyを使用した方がいいんじゃないかな?と思いました。
- Nii
- ベストアンサー率48% (79/162)
サーバ上の画像ファイルを処理しているので、参考にならないかもしれませんが・・・ 画像ファイルを読み込み、透かしをいれています。 携帯の場合は、ファイルサイズに応じて縮小して。 $filename = "sample.jpg"; $up_dir = "./img/"; $strurl = "http://URL"; $font = 2; $tmpfname = "./tmp/tf" . rand(1,100) . ".jpeg"; $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = $up_dir . $filename; list($width, $height, $type, $attr) = getimagesize($filename); //GIF if ($type==1) { $im = imagecreatefromgif($filename); //JPEG } elseif ($type==2) { $im = imagecreatefromjpeg($filename); //PNG } elseif ($type==3) { $im = imagecreatefrompng($filename); } if ($im) { //透かしの文字色 $color = imagecolorallocatealpha($im, 255, 180, 50, 105); //透かしを書き込み for ($i=2;$i<$height;$i=$i+imagefontheight($font)+4){ imagestring($im, $font, rand(imagefontwidth($font) * strlen($strurl) * -1 ,$width), $i, $strurl, $color); } //携帯かチェック if(ereg("DoCoMo|J-PHONE|Vodafone|SoftBank|UP\.Browser|~ /^KDDI/|ASTEL|PDXGW",$ua)){ //元ファイルのサイズから、縮小するパーセントを算出 $percent = 80000 * / filesize($filename) ; //元ファイルのサイズが小さいときは100%に if ($percent>1) $percent = 1; $new_width = $width * $percent; $new_height = $height * $percent; $im_p = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($im_p, $im, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //ファイルに書き込み(クオリティを下げてます) imagejpeg($im_p,$tmpfname,30); } else { //ファイルに書き込み imagejpeg($im,$tmpfname,75); } print "<img src=" . chr(34) . $tmpfname . "?" . time() . chr(34) . "><br>\r\n"; }
- yambejp
- ベストアンサー率51% (3827/7415)
ご存知だとは思いますがとりあえず http://www.php.net/manual/ja/ref.image.php
お礼
表示できました。imagejpegで、リサイズしていない画像を表示しようとしていました。
補足
ご回答ありがとうございます。 こんな感じで試してみましたが、表示できませんでした。 気づいた点などあれば、教えてください。 define(ResizeX, 120); $im_inp = imagecreatefromstring($imgdat); if ($im_inp !== false) { $ix = ImageSX($im_inp); // 読み込んだ画像の横サイズを取得 $iy = ImageSY($im_inp); // 読み込んだ画像の縦サイズを取得 $ox = ResizeX; // サイズ変更後の横サイズ $oy = ($ox * $iy) / $ix; // サイズ変更後の縦サイズ // サイズ変更後の画像データを生成 $im_out = ImageCreateTrueColor($ox, $oy); ImageCopyResized($im_out, $im_inp, 0, 0, 0, 0, $ox, $oy, $ix, $iy); header('Content-Type: image/jpeg'); imagejpeg($im_inp); }