• 締切済み

DBに格納された画像データを縮小して表示したい

PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 $old_img = base64_decode($db_img); $new_img = imagecreatetruecolor(200,200); //200x200のサムネイル画像を作成 $thumbnail = imagecopyresampled($new_img,$db_img,0,0,0,0,200,200,600,600); print $thumbnail; $old_imgの処理が間違っているのだろうと思うのですが、どのように処理すればいいのかわかりませんでした。 この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • warez
  • ベストアンサー率57% (29/50)
回答No.1

$thumbnail = imagecopyresampled($new_img,$db_img,0,0,0,0,200,200,600,600); ↓ $thumbnail = imagecopyresampled($new_img,$old_img,0,0,0,0,200,200,600,600); ではないですか?

ka-kichi
質問者

補足

すみません。間違ってました。 ご指摘の通りです。 ただし、ここに転記する際に間違ったもので、実際のソースは$old_imgを使用しています。

関連するQ&A

  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで見た目だけを小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 //Base64デコード $old_img = base64_decode($db_img); //200x200のサムネイル画像を作成 $new_img = imagecreatetruecolor(200,200); //再サンプリング・縮小(600x600→200x200) $thumbnail = imagecopyresampled($new_img, $old_img, 0, 0, 0, 0, 200, 200, 600, 600); //画面出力 print $thumbnail; この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • imagejpegで表示されない。

    ◆環境◆ PHP Version 5.1.6 apache : 2.x GD Support: enabled GD Version: bundled (2.0.28 compatible) FreeType Support : enabled FreeType Linkage : with TTF library FreeType Version : 1.4 GIF Read Support : enabled GIF Create Support : enabled JPG Support : enabled PNG Support : enabled WBMP Support : enabled XBM Support : enabled ◆質問◆ 既にアップロードされた画像をサムネイルして、表示したいのですが、 バイナリ表示までは出来たのですが、画像が表示できません。 ※$imgにはhttp://www.xxxx.com/image/abcといったファイル名までの絶対パスを取得した文字列が入ります。 <?php $new_img = $img."_thumb.jpg"; $old_img = $img.".jpg"; if(is_dir($img)){ unlink($new_img); }else{ mkdir($img); } list($old_width, $old_height, $old_type, $old_attr) = getimagesize($old_img); //縮小のサイズ $thumbwidth=93; $thumbheight=30; //画像の縮小 $src_im = imagecreatefromjpeg($old_img);//元の画像 $dst_im = imagecreatetruecolor($thumbwidth, $thumbheight);//縮小画像 imagecopyresampled($dst_im,$src_im,0,0,0,0,$thumbwidth,$thumbheight,$old_width,$old_height); imagejpeg($dst_im,$new_img); ?> 一番最後の imagejpeg($dst_im,$new_img); を imagejpeg($dst_im); にするとバイナリが表示されるのですが、 imagejpeg($dst_im,$new_img); にすると何も表示されなくなってしまいます。。 $new_imgのURLにアクセスしても画像が生成されていないようです。 header('Content-type: image/jpeg');を追記すれば良いのか!とも思ったのですが、 追記後にページを見るとサイトのURLが表示されるだけになってしまったり・・。 色々試してみましたが、万策尽き、ご質問させて頂きました。 何か根本的な事が間違っている様な気もしますが、 ご教授願えたらと思います。 何卒よろしくお願い致します。

    • ベストアンサー
    • PHP
  • BLOB型の画像データを表示したい

    環境 OS   : WindowsXP JDK  : 1.5.0_11 Apache : 2.2.4 Tomcat : 5.5.9 eclipse: 3.3.0 struts : 1.2.7 MySQL : 5.0 DBにBlob型として格納した画像データを、 Servlet/JSPでSELECT文を実行して、結果をブラウザに表示する方法が知りたいです。 間違っていたら申し訳ないのですが imgタグからServletを呼び出しその中で処理を行うと 聞きました。 どのような記述をするのでしょうか。 またDBへの接続、SELECT文の実行は分かるのですが その後、どのようにして表示するのでしょうか。 サンプルコードなどありましたら、教えていただきたいと思います。 宜しくお願いします。

    • ベストアンサー
    • Java
  • phpでの画像出力

    フォームでアップロードした画像(jpg)を、base64でエンコードしてテキストとしてDBに格納しています。 そのデータをDBから取り出して、PHPで出力したいのですが、上手く行きません。 下記のような手順で試しましたが、ダメでした。 ※php5とMySQLです。 $img = base64_decode("※DBから取り出したテキスト"); header("Content-type: image/jpeg"); echo $img; 尚、下記のような形では画像表示出来ましたが、出来ればphpからの出力をしたいと考えています。 <img src="data:image/jpeg;base64,※DBから取り出したテキスト" /> php初心者ですが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPでGDライブラリを使って縮小した画像を直接表示したい

    PHPでGDライブラリを使って、「image.jpg」という画像(800x222のJPEGファイル)を、GETで渡した幅に縮小させたくて、次のように書きました。 -----reimage.php--------------------- <?php header("Content-Type:image/jpeg"); $old_width=800; $old_height=222; $width = htmlspecialchars($_GET['w']); $height = ($old_height / $old_width) * $width; $source = imagecreatefromjpeg("image.jpg"); $re_image = imagecreatetruecolor($width,$height); imagecopyresampled($re_image,$source, 0, 0, 0, 0,$width, $height, $old_width, $old_height); imagejpeg($re_image); imagedestroy($re_image); ?> -------------------------- 他のHTMLファイルから <img src="reimage.php?w=480"> などとすると縮小された画像が表示されるのですが、直接「reimage.php?w=480」を開くと、文字化けした文字列が並んでいるばかりで画像が表示されません。 firefoxでMIMEタイプを見てみると、「text/html」になっています。 >header("Content-Type:image/jpeg"); の部分がうまくいっていないのだと思いましたが、どう直せばいいのか分かりません。 なお、サーバーはxreaの広告免除を使っています。 まだPHPを勉強し始めて日が浅いので、見当違いなことを聞いているかも知れませんが、よろしくおねがいします。

    • ベストアンサー
    • PHP
  • MYSQLから、画像表示するには

    symfonyを使用してます。 DBの型はBLOBです、画像の保存はphpadminから、参照ダイアログで登録。 「$photos->getPhotoData()」←DBからとってきたデータ。 以下のソースで、画像表示すると思うのですが、表示しない。 ---ソース1--------------------------------------------- echo '<img src="data:image/jpeg;base64,'.base64_encode($photos->getPhotoData()).'" />' ; ------------------------------------------------------- ソース1を実行すると、「Warning: base64_encode() expects parameter 1 to be string, resource 」と言うエラーが出る。 ---ソース2--------------------------------------------- echo $photos->getPhotoData(); ------------------------------------------------------- ソース2を実行すると「Resource id #126 」と表示される。 表示させる方法をご教授ください。

    • ベストアンサー
    • PHP
  • [au携帯] DBに格納されたバイナリ形式の画像を表示する方法

    [au携帯] DBに格納されたバイナリ形式の画像を表示する方法 データベース(PostgreSQL)に格納されたバイナリデータの画像をPHPを使用して元に戻し表示しようとしています。 携帯用ホームページを作成しているのですが、ドコモだとちゃんと表示されるのにAUでアクセスすると画像がバッテンになってしまって表示できません。 下記のようにPHPを使って画像を表示しているのですが何処が間違っているのでしょうか。 画像の表示用 img.php <?php //DBから必要なデータを取得します。 // $imag_data ------- バイナリ形式の画像データ // $image_file_type - 画像保存時に下のようにして取得した値 // list($width,$height,$image_file_type)=getimagesize($imgurl); // $img_name -------- 画像の名前 $imag_data = pg_unescape_bytea($imag_data); header("Content-type: " .$image_file_type); header('Content-Disposition: inline; filename="' .$img_name.'"'); print($imag_data); exit(); ?> img.phpに直接アクセスするのと、<img src='http://…img.php' />で表示してみたのですが、ドコモだと2通りともできるのに、AUだと「リクエストされたページは表示できません。」と出てしまい、困っています。 どなたか、ご教授くださいますようよろしくお願いいたします。

    • 締切済み
    • PHP
  • DBに格納されたバイナリデータを画像表示する方法

    PHP初心者ですみません。PHP、PSQLでDBにアップロードされた画像データ(バイナリデータ)をWEB上で例<img src=image.php>画像表示したいのですが、画像が×表示になってしまいます。格納時にデータが間違っているのか?それとも表示方法が間違っているのかわかりません。どなたか助けてください。 【アップファイル格納時スクリプト】 //fopenして変数に保存 $fp = fopen($_FILES["upfile"]["tmp_name"],"r"); $imagedata = fread($fp,filesize($_FILES["upfile"]["tmp_name"])); fclose($fp); //バイナリデータをエスケープ $imagedata = pg_escape_bytea($imagedata); $filename = $_FILES["upfile"]["name"]; $sql_g = "update img set img_data='$imagedata'"; $conn_g = connect(); $result_g = pg_query($conn_g,$sql_g); pg_close($conn_g); } 【画像表示用ファイルスクリプトimage.php】 $sql_i = "select img_data from img"; $conn_i = connect(); $res_i = pg_query($conn_i,$sql_i); $num_i = pg_num_rows($res_i); $img_data = pg_fetch_result($res_i,0,"img_data"); header('Content-type: image/gif'); header('Content-Disposition: inline; filename=' . $img_data); print"${img_data}"; 【画像表示部分スクリプト】 <img src="http://●●●●/●●/image.php" alt="イメージ" width="500" height="100"> こんな感じなのですが、どこがどう違うのか何度も試してやっとここまできたのですが、答えがでません。お解りの方いらっしゃいましたらご指摘をどうかよろしくお願いいたします。

  • 画像のリサイズの仕方について

    <? class Resize { function resize_exec($in, $out, $x, $y){ $img_in = imagecreatefromjpeg($in); $ix = imagesx($img_in); $iy = imagesy($img_in); $img_out = imagecreatetruecolor($ix, $iy); ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, $x, $y, $ix, $iy); $quality = 100;//画質クオリティ(標準値 75) imagejpeg($img_out, $out, $quality); imagedestroy($img_in); imagedestroy($img_out); } } ?> というクラスを作成して コンストラクタ内でnewして $this->resize->resize_exec($upfile, $sendpath, 50, 30); としたのですが、リサイズできません。 どこか悪いでしょうか? 対象画像はとりあえずjpegでいいかなと考えています。

    • ベストアンサー
    • PHP
  • VB.NETにてDB2のBLOB型のデータを取得したい

    質問させてください。 現在、VB.Net2005にてDB2 V5からデータを取得して OracleにInsertしようと試みているのですが、 DB2からBLOB型の列のデータを取得しようとすると、 エラーが発生して取得できず困っています。 BLOB型以外の列に関しては取得できています。 VB.NetからのDB2への接続は、ODBCにて行っています。 デバッグにて、エラーが発生している場所は、 データアダプタでFillメソッドを実行している箇所です。 上記の現象に、お心当りの方はお知恵をお貸し下さい。 よろしくお願いします。