人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[PHP],[画像処理]
POSTで送信された画像を、リサイズして、DB(MySQL)にBLOB型で格納しようと考えています。
リサイズした画像のバイナリデータが取得できず、困っています。


//画像を取得して、GDで適当に縮小
$upload_img = ImageCreateFromJPEG( $_FILES['file']['tmp_name'] );
$width = ImageSx($upload_img);
$height = ImageSy($upload_img);
$resized_img = ImageCreateTrueColor($width/2, $height/2);
ImageCopyResampled($resized_img, $upload_img, 0,0,0,0, $width/2, $height/2, $width, $height);
//DBにinsertする画像データの取得?
$insert_img = file_get_contents(ImageJPEG($resized_img));


GDのImageJPEGを使用すると、ブラウザに出力されてしまいました。
DBに挿入できる画像データの取得の仕方を教えてください。よろしくお願いします。

●質問者: ingot07
●カテゴリ:ウェブ制作
✍キーワード:blob dB Gd MySQL [php]
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●10ポイント

いったんテンポラリ・ファイルにセーブしてはどうでしょうか。

$tmpname = tempnam("/tmp", "hogehoge");
imagejpeg($resized_img, $tmpfname);
$insert_img = file_get_contents($tmpfname);
unlink($tmpfname);
◎質問者からの返答

そうですね…。

他に手がなければ、そうします。

回答ありがとうございます。


2 ● kiku-_-san
●10ポイント

ImageJPEG()関数の第二引数に保存するファイル名を指定し、そのファイルをfile_get_contents()してやれば大丈夫です。

■ソースコード例

// 一時保存するファイルパス
$tmp_file_path = '/tmp/tmp.jpg';

// 一時保存
ImageJPEG($resized_img, $tmp_file_path);

//DBにinsertする画像データの取得
$insert_img = file_get_contents($tmp_file_path);
◎質問者からの返答

わーい。ごめんなさい。

回答ありがとうございます。


3 ● GoldenDawn
●100ポイント ベストアンサー

出力をバッファリングする。

<?php
ob_start() ;
imagejpeg($resized_img)
$insert_img = ob_get_contents() ;
ob_end_clean() ;
?>
◎質問者からの返答

完 璧 です。

やりたいと思っていた通りに動作しました。

本当に、ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ