• ベストアンサー

携帯用に画像のサイズ変更をしたい

MySQLに登録されている画像データを携帯用にリサイズして表示したいのですが、どのような方法があるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#41855
noname#41855
回答No.1

PCで投稿された画像をImageMagickで携帯用にリサイズしたことはあります。 便利ですし、けっこう綺麗な画質でリサイズできました。 ImageMagickで検索すればインストール方法や使い方を解説しているサイトが多数出てきますので、お使いのシステムに合わせて調べられてください。

その他の回答 (3)

回答No.4

Niiさんのソースですが、最後にimagedestroyを使用した方がいいんじゃないかな?と思いました。

  • Nii
  • ベストアンサー率48% (79/162)
回答No.3

サーバ上の画像ファイルを処理しているので、参考にならないかもしれませんが・・・ 画像ファイルを読み込み、透かしをいれています。 携帯の場合は、ファイルサイズに応じて縮小して。 $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)
回答No.2

ご存知だとは思いますがとりあえず http://www.php.net/manual/ja/ref.image.php

small_1137
質問者

お礼

表示できました。imagejpegで、リサイズしていない画像を表示しようとしていました。

small_1137
質問者

補足

ご回答ありがとうございます。 こんな感じで試してみましたが、表示できませんでした。 気づいた点などあれば、教えてください。 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); }

関連するQ&A

専門家に質問してみよう