3

現在、TinyMCEのArchivプラグインに問題があります。画像をアップロードすると、画像のサムネイルが作成されます。しかし、透明なPNGの背景は、黒でした。まあ、透明度を保つための機能を追加しようと思ったのですが、やっぱりうまくいきません。さらに、stackoverflowに関するすべてのPHPドキュメントと質問/回答を読みましたが、役に立ちませんでした。

問題を数行のコードに減らしました。これは実際にはサムネイルを作成しませんが、同じ問題があります。背景が透明なすべてのPNGは、後で背景が黒になります。

$thumb = imagecreatefrompng($originalPath);     
imagesavealpha($thumb, true);
imagealphablending($thumb, false);
imagepng($thumb, $thumbPath, 0);

新しい空の画像を作成し、透明度で塗りつぶすと機能します。ただし、既存の透過PNGから作成すると、失敗します。私は何かが恋しいですか?

これをすぐに解決できない場合は、Archiv-Pluginを拡張してオプションでImageMagickを使用します...

4

2 に答える 2

1

私も先週この問題に遭遇しました。数時間の検索と研究の後、私はここに問題を説明する何かがあると思います。

まず、PNGには、パレットベースのpngとtruecolorpngのいくつかの形式タイプがあります。さらに、透過性のあるPNGを実装する方法は3つあります。

  1. 透明度フラグ付きのパレットベースのPNG
  2. 透明度フラグ付きTruecolor(RGB)PNG
  3. アルファチャネル付きトゥルーカラーPNG(RGBA形式)

これが、コードが正しく機能する場合と機能しない場合がある理由です。PNGの透明性の概念の記事では、これら3つのタイプの違いについて詳しく説明しています。

私はあなたのコードを試しました。ソースpng画像がアルファチャネル付きのトゥルーカラーPNGの場合、完全に機能します。それ以外の場合、出力画像の透明部分は黒色になります。

これが2つのpng画像です。下部に黒い部分があるのはタイプ2フォーマットです。もう1つはRGBA形式です。

ここに画像の説明を入力してください ここに画像の説明を入力してください

于 2015-01-18T06:23:00.460 に答える
0

アンドレアスを心配しないでください、あなたのスクリプトはうまく機能します、私はちょうどそれをテストしました。

作業中のPHPのGDバージョンを確認してください。私はGDバージョン2を持っています。

于 2012-09-25T12:40:27.820 に答える