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

初心者です。
質問させてください。

イメージを編集してそれをmysqlのデータベースに渡したいのですが、イメージを文字列に変換する関数はありますでしょうか?

最終的に

$imghexdata = unpack("H*hex", $editimgstr);

のようにして16進数の文字列にしてmysqlに渡したいのです。

編集の内容は例えば以下のような内容です。

$haikei = imagecreatefromjpeg( "haikei.jpg" );
$insimg = imagecreatefromjpeg( "insert.jpg" );

imagecopymerge($haikei, $insimg, 0, 0, 0, 0, imagesx($insimg), imagesy($insimg), 50);

この$haikeiを文字列に変換したいのです。

ひょっとしてunpackで出来るのでしょうか?

どうぞよろしくお願いいします。

A 回答 (4件)

うまくいかないなら、一時ファイルに書き出し、それを格納すれば良いかと。

    • good
    • 0
この回答へのお礼

taketan_mydns_jpさん、ありがとうございます。

今も、方法探している最中ですが、まじめにこの方法しかないかもしれません。

他の方法があったらまたUPします。

お礼日時:2006/09/07 16:54

> この$haikeiというのは型がGDのリソースですので、このままだとmysqlに渡せないですよね?(ひょっとして渡せるのかな?)



渡せます。バイナリデータをそのまま渡す事が可能です。
BLOB型です。

この辺を参考に。
http://www.itmedia.co.jp/enterprise/0309/24/epn2 …

この回答への補足

taketan_mydns_jpさんお付き合いいただきありがとうございます。

おっしゃる通りバイナリは渡せますね。

でも$haikeiはGDリソースなので、そのまま文字列(バイナリ)と同じ扱いはできないのでは?と思います。

わたくし型GDリソースというものをよく理解していないのですが、文字列(バイナリ)に変換できないものでしょうか?

勉強不足で恐縮ですm(__)m

補足日時:2006/09/04 11:11
    • good
    • 0

> イメージを編集してそれをmysqlのデータベースに渡したい



という事であれば、変換せずバイナリのまま格納するのが適当かと。
当然、'や''等が悪さをするので、
mysql_escape_stringや、addslashesを使って格納します。当然、addslashesを使ったときには出力時にはsplitslashesで変換する必要があります。

> 16進数の文字列にしてmysqlに渡したい
この目的は何でしょう?
bin2hexを使えば出来そうですね
http://php.s3.to/man/function.bin2hex.html

この回答への補足

補足とお礼です。

まずはBLUEPIXYさん
taketan_mydns_jpさんレスありがとうございます。

失礼しました、わたくしの質問に問題がありました。

#イメージを文字列に変換する関数

正しくはGDのイメージリソースをバイナリ(文字列)に変換する関数を知りたいのです。

つまり
imagecopymerge($haikei, $insimg, 0, 0, 0, 0, imagesx($insimg), imagesy($insimg), 50);

この$haikeiというのは型がGDのリソースですので、このままだとmysqlに渡せないですよね?(ひょっとして渡せるのかな?)
一旦ファイルに落として、再度get_file_contentsあたりで読み込めば可能なのはわかるのですが、関数でできないものでしょうか?

なお
PHPは4.3.11
mysqlは4.0.20
GDライブラリは2.0です。

補足日時:2006/09/01 17:55
    • good
    • 0

base64_encode


http://jp2.php.net/manual/ja/function.base64-enc …
base64_decode
を使ったらどうでしょうか
    • good
    • 0

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