ホームページ >バックエンド開発 >PHPチュートリアル >PHP は画像のカスタム情報 _exif などを読み書きしますか?
PHP 画像
要件の説明:$image = new Imagick($file);$image->setImageProperty('Exif:Make', 'Imagick');$image->writeImage($file2);$image2 = new Imagick($file2);echo $image->getImageProperty('Exif:Make');
$size = getimagesize('1.jpg', $info);var_dump($size);if(isset($info['APP13'])){ $iptc = iptcparse($info['APP13']); var_dump($iptc);}
という考えのようです。同じ、つまりファイルのデータ形式の外に文字を挿入します。
私も最初はこの方法を考えて、いくつかのファイルを手動で編集したところ、GIFの動的画像が破損しました。当時はこの方法は無理だと思ったので、それ以上は進めませんでした。手動修正により破損したGIF画像を使用してxuzuningのコードでテストしたところ、手動修正はできないことが判明しました。
この解決策は基本的には実行可能と思われますが、問題は、すべての画像形式をテストすることはできないのではないかということです。この方法は決定的ですか? (GD がサポートしていれば問題ないのでしょうか?)
PS: まずはいくつかの形式で画像をテストしてみます。
これは、PHP で imagemagick 拡張モジュールをインストールする必要がある Imagick クラスを使用して実現できます
Google で Imagick 関数を見つけたと投稿したときにすでに述べましたが、実際には書き込み不可能です。上の人が言ったこと Imagick を使用してどのように実装されますか?
はい、GD でサポートされているすべての画像を使用できます (gif、jpg、png)
このような画像は圧縮されて保存されるため、ファイル ヘッダーにデータ領域の長さが示されます。 画像が表示されると、ソフトウェアはこの識別子を通じてデータを読み取り、解凍します
ただし、bmp ファイルなど、GD がサポートしていないファイルの場合は、それほど幸運ではありません。
bmp データはファイルの末尾からファイルの先頭まで配置されています。ファイルの末尾にコンテンツを追加すると、画像データが破壊されます
実際、最も簡単なテスト方法は、バイナリデータと元のファイルをコピーし、DOS コマンドを使用します
copy /b 元のファイル + バイナリデータの新しいファイル
次に、この新しいファイルに問題があるかどうかを確認します
まずこの解決策を使用しましょう PHP クラスまたは。さまざまな画像形式と互換性のあるもの。たとえば、画像にバッチで透かしを入れる場合、画像に透かしが入っているかどうかを判断する属性を追加できます。
お二人とも投稿ありがとうございます