- 締切済み
イメージデータを文字列に変換する関数は?
初心者です。 質問させてください。 イメージを編集してそれを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で出来るのでしょうか? どうぞよろしくお願いいします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
うまくいかないなら、一時ファイルに書き出し、それを格納すれば良いかと。
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
> この$haikeiというのは型がGDのリソースですので、このままだとmysqlに渡せないですよね?(ひょっとして渡せるのかな?) 渡せます。バイナリデータをそのまま渡す事が可能です。 BLOB型です。 この辺を参考に。 http://www.itmedia.co.jp/enterprise/0309/24/epn25.html
補足
taketan_mydns_jpさんお付き合いいただきありがとうございます。 おっしゃる通りバイナリは渡せますね。 でも$haikeiはGDリソースなので、そのまま文字列(バイナリ)と同じ扱いはできないのでは?と思います。 わたくし型GDリソースというものをよく理解していないのですが、文字列(バイナリ)に変換できないものでしょうか? 勉強不足で恐縮ですm(__)m
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
> イメージを編集してそれを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です。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
base64_encode http://jp2.php.net/manual/ja/function.base64-encode.php base64_decode を使ったらどうでしょうか
お礼
taketan_mydns_jpさん、ありがとうございます。 今も、方法探している最中ですが、まじめにこの方法しかないかもしれません。 他の方法があったらまたUPします。