dポイントプレゼントキャンペーン実施中!

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

A 回答 (4件)

PCで投稿された画像をImageMagickで携帯用にリサイズしたことはあります。


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

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

    • good
    • 0

サーバ上の画像ファイルを処理しているので、参考にならないかもしれませんが・・・


画像ファイルを読み込み、透かしをいれています。
携帯の場合は、ファイルサイズに応じて縮小して。

$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";
}
    • good
    • 0

ご存知だとは思いますがとりあえず



http://www.php.net/manual/ja/ref.image.php

この回答への補足

ご回答ありがとうございます。
こんな感じで試してみましたが、表示できませんでした。
気づいた点などあれば、教えてください。

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);
}

補足日時:2007/08/24 17:46
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/24 18:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!