[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に挿入できる画像データの取得の仕方を教えてください。よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/07 00:36:53
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:GoldenDawn No.3

回答回数426ベストアンサー獲得回数81

ポイント100pt

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

<?php
ob_start() ;
imagejpeg($resized_img)
$insert_img = ob_get_contents() ;
ob_end_clean() ;
?>
id:ingot07

完 璧 です。

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

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

2008/09/07 00:34:54

その他の回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント10pt

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

$tmpname = tempnam("/tmp", "hogehoge");
imagejpeg($resized_img, $tmpfname);
$insert_img = file_get_contents($tmpfname);
unlink($tmpfname);
id:ingot07

そうですね…。

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

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

2008/09/06 21:53:24
id:kiku-_-san No.2

回答回数7ベストアンサー獲得回数0

ポイント10pt

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);
id:ingot07

わーい。ごめんなさい。

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

2008/09/06 21:57:03
id:GoldenDawn No.3

回答回数426ベストアンサー獲得回数81ここでベストアンサー

ポイント100pt

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

<?php
ob_start() ;
imagejpeg($resized_img)
$insert_img = ob_get_contents() ;
ob_end_clean() ;
?>
id:ingot07

完 璧 です。

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

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

2008/09/07 00:34:54
  • id:kou32rr
    なぜ画像のバイナリデータをDBに格納する必要があるのでしょう?
    素直に画像は画像ファイルとして保存しておけばDBも重くならずに良いと思うのですが。。。
  • id:ingot07
    >kou32rrさん
    全くその通りです。
    でも、なるべく公開フォルダに生のファイルを置きたくないんです。その理由はお察しで。
    どうしても手がなければ、一時保存して逐次削除する手ですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません