FPDFの公式ドキュメントでは、アルファチャネルはPNGではサポートされていないと述べています。
回避策はありますか?
透明な画像を別の画像の上に配置する必要がある場合:PHPの組み込み関数を使用して、ある画像を別の画像にコピーします。次に、両方の画像を含む新しい画像が作成されます。非アルファpngとして保存し、挿入します。
画像を組み合わせるために必要なコードの例をここに示します。
画像の下にテキストを表示する場合:最初に画像を挿入してから、ドキュメントにテキストを書き込みます。
FPDF用にこの拡張機能を試してください。
http://valentin.dasdeck.com/php/fpdf/fpdf_alpha/
ページからの簡単な説明:
このスクリプトを使用すると、アルファチャネルで画像(PNGまたはJPG)を使用できます。アルファチャネルは、個別の8ビットPNG(「マスク」)として提供することも、PNGの場合は、内部アルファチャネルを使用することもできます。後者の場合、GD2.x拡張機能が必要です。
別のマスク画像を指定することには、いくつかの利点があります。-GDは必要ありません。-より良い品質(完全な8ビットアルファチャネル、GDは内部的に7ビットアルファチャネルのみをサポート)-はるかに高速(埋め込まれたアルファチャネルの抽出はピクセル単位で行う必要があります)
function Image(string file、float x、float y [、float w [、float h [、string type [、mixed link [、boolean isMask [、int maskImg]]]]]])
元のImage()メソッドの場合と同じパラメーターですが、2つの追加の(オプションの)パラメーターがあります。isMask:指定してtrueの場合、その画像は他の画像のマスクとして使用されます。この場合、パラメータx、y、w、およびhは無視され、マスク画像自体はページに表示されません。maskImg:この画像のマスクとして使用される画像リソースの数(isMaskパラメーターがtrueに設定された以前に呼び出されたImage()によって返される)。
function ImagePngWithAlpha(string file、float x、float y [、float w [、float h [、mixed link]]])
元のImage()メソッドの場合と同じパラメーターですが、タイプパラメーターはありません。
これは私のために働いた人々に感謝します。私は基本的に上記の拡張機能(http://valentin.dasdeck.com/php/fpdf/fpdf_alpha/)を含め、次に次のようにクラスを拡張しました。
fpdf_tpl.phpではrequire('PDF_ImageAlpha.php');
class FPDF_TPL extends PDF_ImageAlpha
PDF_ImageAlpha.phpの場合:
class PDF_ImageAlpha extends FPDF{
Inside of here I chaged the image() function to F_image() to avoid clashing (probably should have used namespaces). With a quick search and replace you will see that this needs replacing 2 more times.
}
次に、workhorse.phpファイルで、image()の代わりに関数F_image()を呼び出しました。これにより、問題が修正されました。
ありがとう!!!