MySQLデータベースのBlob列でTiffイメージを開いて、回転し、保存する

StackOverflow https://stackoverflow.com/questions/1032994

  •  06-07-2019
  •  | 
  •  

質問

私の問題はかなり簡単です:

  1. MySQLデータベースから画像を取得する(現在blob列にバイナリデータとして保存されている)
  2. その画像を90度回転します(PHPのimagerotateを使用)
  3. ローテーションの変更が適用された画像をデータベースに保存します。

これらの画像はウェブサーバーに触れることが許可されていないため、画像をデータストリームとして保存できる関数を見つけるのに問題があります(ファイルシステムではなく)。アドバイスは大歓迎です。

ありがとう

役に立ちましたか?

解決

回転する前に画像を別のタイプに変換していますか?あなたはTIFFを使用していると言いました、GDは TIFF画像のヘッダーのみを読むことができます。最初に変換します。おそらく ImageMagick

ほとんどの場合、ファイルを一時ディレクトリに保存する必要があります。

  • ファイルのデータベースを照会
  • 一時ディレクトリに保存(必要に応じてアクセス許可を設定することでファイルを保護できます)
  • 画像の回転
  • データベースに挿入
  • 一時ファイルを削除

他のヒント

DBからデータを選択します。データを imagecreatefromstring()

これで、imagerotateを呼び出すことができる画像リソースができました。

DBに保存し直すには、 を使用して出力する必要があります。 imagepng() / imagejpeg() または使用している画像タイプに相当する関数。これらの関数はブラウザまたはファイルに出力するため、出力バッファリングを使用して文字列をキャプチャし、DBに保存できます。

ob_start();
imagepng($resource);
$img_data = ob_get_contents();
ob_end_clean();

$ img_data をDBに保存できるようになりました。

これは大まかな概要にすぎませんが、アイデアを説明したと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top