重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

$gazou1 = 'base.gif';
$gazou2 = $row['gazou'];
$output =uniqid("").'.gif';
$cmd = 'convert -compose over ' . $gazou1 . ' ' . $gazou2 . ' ' . $output;
system($cmd,$ret);
if ($ret===0){
print '<img src=' . $output . '>';
$outputで生成された画像をDBに登録する方法を教えてください。

A 回答 (2件)

まあ、そこまで目くじら立てて怒る必要はないとは思うけど、1さんが言うのも一理あってBLOB形式で格納しようとデータベースに依存しますし取り扱いが非常に面倒です。


(その分、効率的に取り扱いが出来るメリットがある)

一番簡単なのは画像をTEXTデータに変更して格納する手法です。
これだとデータベースの種類にあまり依存せずBLOBと比較しても取り扱いが簡単です。
カラムの種類はMySQLならLONGTEXTなど大きめなTEXT形式を推奨。

// 保存時
$data = base64_encode(file_get_contents(アップロードされた画像ファイル名));
※$dataはテキストデータになるのでINSERT/UPDATEで保存できます

// 読み出し時
$img = base64_decode(DBテーブルのTEXTデータ);

// 読み出したデータを保存
$file = fopen(保存するファイル名, "w");
fwrite($file, $img);
close $file;


こんな感じで行けると思います。
※適当に書いただけなのであくまでも参考程度に

ただし、MySQLは1カラムに格納できるデータ容量がデフォルトで最大1MBまでなのでご注意を。
※しかもbase64の段階でデータ量が増えます
レンタルサーバーだと設定変更が出来ないのでアップロードした後にGDかイメージマジックでリサイズしてあげる処理が必要になるでしょう。
    • good
    • 0

> $outputで生成された画像をDBに登録する方法を教えてください。



だったら、何のDBを使っているのかぐらい書きなさい。

難しいことから修得しようとするのは勝手だが、少しは自分で調べないと無理だよ?

この回答への補足

mysqlです。

補足日時:2011/10/23 09:18
    • good
    • 0

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