• 締切済み

イメージデータを文字列に変換する関数は?

初心者です。 質問させてください。 イメージを編集してそれを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で出来るのでしょうか? どうぞよろしくお願いいします。

  • konch
  • お礼率25% (1/4)
  • PHP
  • 回答数4
  • ありがとう数1

みんなの回答

回答No.4

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

konch
質問者

お礼

taketan_mydns_jpさん、ありがとうございます。 今も、方法探している最中ですが、まじめにこの方法しかないかもしれません。 他の方法があったらまたUPします。

回答No.3

> この$haikeiというのは型がGDのリソースですので、このままだとmysqlに渡せないですよね?(ひょっとして渡せるのかな?) 渡せます。バイナリデータをそのまま渡す事が可能です。 BLOB型です。 この辺を参考に。 http://www.itmedia.co.jp/enterprise/0309/24/epn25.html

konch
質問者

補足

taketan_mydns_jpさんお付き合いいただきありがとうございます。 おっしゃる通りバイナリは渡せますね。 でも$haikeiはGDリソースなので、そのまま文字列(バイナリ)と同じ扱いはできないのでは?と思います。 わたくし型GDリソースというものをよく理解していないのですが、文字列(バイナリ)に変換できないものでしょうか? 勉強不足で恐縮ですm(__)m

回答No.2

> イメージを編集してそれをmysqlのデータベースに渡したい という事であれば、変換せずバイナリのまま格納するのが適当かと。 当然、'や''等が悪さをするので、 mysql_escape_stringや、addslashesを使って格納します。当然、addslashesを使ったときには出力時にはsplitslashesで変換する必要があります。 > 16進数の文字列にしてmysqlに渡したい この目的は何でしょう? bin2hexを使えば出来そうですね http://php.s3.to/man/function.bin2hex.html

konch
質問者

補足

補足とお礼です。 まずは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)
回答No.1

base64_encode http://jp2.php.net/manual/ja/function.base64-encode.php base64_decode を使ったらどうでしょうか

関連するQ&A

  • DOUBLE型の16進HEX文字列変換について

    12バイトのHEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)などを をいったん、10進に変換し、DOUBLE型の変数に設定し、 数値演算を行い 再度HEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)に変換を行いたいのですが、 変換の方法がわからず困っています。 HEX関数はLONGでしかおこなえないようで・・ すみませんが、ご教授いただけると助かります。 宜しくお願いいたします。

  • 文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法

    文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法がわかりません。ただ単に文字列を16進数に変更するだけならbin2hex()でできますけど、誰か知っている方はいませんか?具体的には、変換された文字列が1a2b3c4d5e6fなら、1A.2B.3C.4D.5E.6Fと変換したいんです。どうすればいいですか?

    • ベストアンサー
    • PHP
  • 数値を文字列に変換する方法

    int rssi_dec = Convert::ToInt32("0X" + test02, 16); -----------(中略)----------------------- 一度、文字列だったものを数値に変換して、中略部分で計算をして、もう一度数値をHEXの 文字列に変換して、 String^ test このtestの中に代入したいと思っているのですが、どのようにすればよいのでしょうか? どうぞ、ご教授よろしくお願い致します。

  • VB2005の文字列関連の関数について

    VB2005で ある文字列中の特定文字の位置を返す関数はありますか? たとえば "1234567890" という文字列中で"56"という文字列は "5"番めにあるというような。 N88BasicのPOS$のようなイメージです。

  • エクセルで文字挿入をする関数は?

    ブログのHTML編集で分からないことがあります。 例えば以下の文字列をエクセルに貼り付けたとき、 http://image.blog.livedoor.jp/imgs/c/e/ceb42b41.jpg 別のセルにこのように変換したいです。 http://image.blog.livedoor.jp//imgs/c/e/ceb42b41-s.jpg つまり、「ceb42b41.jpg」を「ceb42b41-s.jpg」と”-s”を挿入したい。どのような関数を使えばできるでしょうか? よろしくお願いいたします。

  • blob型のデータの変換について

    blob型のフィールドに文字列や画像をいれたところ、 見慣れない文字列に変換されてしまいました。 これを元の文字列や画像に戻すには どうやって変換すればよいのでしょうか? もしMySQLとphpの関数でできるのなら それも教えていただけないでしょうか?

    • ベストアンサー
    • MySQL
  • 文字列のunicodeへの変換方法

    utf8で記述したperlスクリプトを書いてます。 諸般の事情より use utf8; は宣言できません。 そんな状況で $test = 'テスト'; という文字列を '%u30c6%u40b9%u30c8' に変換したいのですが 方法が見つかりません。 unpackやsprintfを使ってあげるのかと思うのですが 思うような値が得られません。 わかる方、いらっしゃると思います。 教えていただけませんか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 透過合成した画像からの縮小コピーで黒塗りに!

    PHPの処理によって透過処理した画像と画像を合成して出来た画像(test.png)を単純に小さいサイズのPNG画像として コピーしたいのですが、黒塗りになってしまい、調べながら思考錯誤してみましたができません。 分かる方、どうかお知恵を貸して下さい。 下記は、黒塗りになってしまうソースです。 <?php $img = 'http://www.angelito.biz/test.png' ; // 読み込む画像のアドレス $size = 100 ; // リサイズするサイズ (大きい方の幅をこれに合わせる) if (!($irc = @imagecreatefromjpeg($img))) // jpeg として読み込んでみる if (!($irc = @imagecreatefrompng($img))) // png として読み込んでみる $irc = @imagecreatefromgif($img) ; // gif として読み込んでみる if (!$irc) { // 画像が正しく読み込めなかったときの処理 echo '×' ; exit ; } if (imagesx($irc) > imagesy($irc)) { $rrc = imagecreate($size, $size * imagesy($irc) / imagesx($irc)) ; } else { $rrc = imagecreate($size * imagesx($irc) / imagesy($irc), $size) ; } imagecopyresampled($rrc, $irc, 0, 0, 0, 0, imagesx($rrc), imagesy($rrc), imagesx($irc), imagesy($irc)) ; // jpgeg 画像として出力 header('Content-type: image/png') ; imagepng($rrc) ; ?> ■環境 windows vista xampp/apache 2.2.4 PHP Version 5.2.3

    • ベストアンサー
    • PHP
  • 数字を文字列に変えて頭に0を足せますか?

    データベースをエクセルに変換して、編集していたのですが、うっかり文字列にするのを忘れてしまい、電話番号の頭の0がすべて消えてしまいました。 09011111111→901111111 のような感じです。 すでにかなりいじってしまった為、一からやり直すこともできず、データベースは4000件程になっています。 電話番号の行をいまさら文字列に変えても頭の0は復活しないのですが、 これらの行を指定して、すべてのセルの数字の頭に「0」を追加する事はできますでしょうか。

  • 文字参照からUTF-8への変換

    MySQLデータベース上にlatin1の文字列データが格納されています。このデータは、具体的には&#nnnnn;のような10進型文字参照の連続です。ウェブアプリケーションを介してブラウザー上では日本語、中国語、アラビア語その他言語の文字列として表示されます。 このデータをUTF-8に変換し、新たなフィールドに格納するためには、どのようにしたら良いでしょうか。MySQLだけで平易に解決できるならそれに越したことはないのですが、PHPまたはASP.NETによるソリューションでも構いません。

    • ベストアンサー
    • MySQL

専門家に質問してみよう