4

GDライブラリを使用してPHPでjpgのピクセルを編集するプロジェクトに取り組んでいます。PHPからの出力が、設定したピクセル値(cough-steganography-cough)を保持することは、私のプロジェクトにとって非常に重要で重要です。

PHPで画像操作を試みたのはこれが初めてです。以前はJavaの実装で問題がなかったので、jpegさらに先に進む前にGDの圧縮品質を調査しないのは愚かでした。

私の努力の結果、私のコードは想定どおりに機能しないことがわかりました。私はそれが私のコードではないと確信しています(編集された画像リソースでエンコードおよびデコード機能をテストし、それらは機能しました)。

私の質問は次のとおりです。

  1. 私が見ることができる唯一の問題は、imagejpeg()の圧縮に関するものです。私は正しいでしょうか?

  2. 必要な圧縮を提供するライブラリはありますか?(変更したピクセル値を保持します)

4

3 に答える 3

3

デフォルトでは、から出力される画像の品質imagejpegは75です。最高品質の画像を取得するには、100に設定してみてください。

  bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )

詳細については、マニュアルを確認してください。

また、imagecopyresampledを使用してみてください。imagecopyresized(コードのどこかで使用していたと思います。imagecopyresampled代わりに使用してください。)

編集

それなら、 ImageMagick(またはGD2)を試してみるべきだと思います。GDよりも優れた品質を提供します。これを確認してください

于 2011-07-03T06:01:13.033 に答える
2

ステガノグラフィをピクセルごとに行う場合、JPEGファイル形式はステガノグラフィにはあまり適していません。

JPEGは、各ピクセルのビットレベルの情報を破壊する画像圧縮(最高品質でも)を使用します。jpegタイプの圧縮(不可逆圧縮)は、人間の目/脳が画像を保持するために作成されますが、ファイル内の画像のビットは保持されません。

すでに書いたように、ピクセルを保持できる画像形式を使用する必要があります。このような形式は、 RLE圧縮を使用したBMP、またはZIPまたはRLE圧縮を使用したTIFF画像形式である可能性が高くなります。これは、ロスレスデータ圧縮と呼ばれます。

于 2011-07-03T07:02:12.343 に答える
0

imagepng()関数の代わりに使用してimagejpeg()、圧縮を0に設定します。

bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )

参照: http: //php.net/manual/en/function.imagepng.php

于 2013-10-10T14:37:26.727 に答える