2012-03-11 38 views
2

これはよくある質問ですが、すべての組み合わせを試してみたところ、それはまだ私のために働いていません。PHP:不透明度のJPEGに透明なPNGを追加

私のPNG透かしは透明で、元のJPGをこの透かしでオーバーレイし、透かしに50%の不透明度を追加したいと考えています。

透かしが追加され、不透明度が作成されますが、PNGの透明度は不透明な白色としてレンダリングされます。

imagecopy()を使用している例を見ましたが、その機能には不透明度を追加するオプションがありません。次のように

私のコードは次のとおりです。

<?php 
$file = 'orgCar.jpg'; 
$newfile = 'newCar.jpg'; 

if (!copy($file, $newfile)) { 
    echo "failed to copy $file...\n"; 
} 
$tempIMG = imagecreatefromjpeg($newfile); 
$wmkIMG = imagecreatefrompng('wmark.png'); 
imagealphablending($wmkIMG,true); 

imagecopymerge($tempIMG, $wmkIMG, 755, 864, 0, 0, 465, 36, 50); 

// Save the image to file and free memory 
imagejpeg($tempIMG,'newWM.jpg'); 
imagedestroy($orgIMG); 
imagedestroy($wmkIMG); 

echo '<h3>Testing of Watermarking</h3>'; 
echo '<div>'; 
echo '<img width="160" src="orgCar.jpg" title="original" alt"" />'; 
echo '<img width="160" src="newCar.jpg" title="copy" alt"" />'; 
echo '<img width="240" src="wmark.png" title="watermark" alt"" /><br>'; 
echo '<img width="640" src="newWM.jpg" title="New with Watermark" alt"" />'; 
echo '</div>'; 
?> 

簡単な答えがある場合は、私が見落としている誰かがそれに私を指すことができれば、その後、私は、非常に感謝されます。

+2

は、[この](http://uk3.php.net/manual/en/image.examples-watermarkです。 PHP)任意の良い? – halfer

+0

私はそのオプションを試しましたが、ウォーターマークの不透明度は作成されません。 – mcl

答えて

5

imagecopymerge()に渡す透明度は、画像のアルファチャンネルであるではなく、の代わりに使用されます。それは、50%の不透明度を含み、その後、(私はそれをテストし、正常に動作します)imagecopy()を使用するよう

1)PNGを変更します。

は、2つのオプションがあります。真のカラーPNGは完全なアルファチャンネルを使用できるので、イメージに半透明を含めることができます。

2)は、ここで説明したような回避策を使用します。

imagecopymerge_alpha

+0

私はウォーターマークの不透明度を下げるためにFireworksを使用して素晴らしいアイデアを試みました。それは透かしの強度を減らしましたが、私が 'imagecopy()'を実行したとき、外側の透明度は機能しましたが、主要な透かしは不透明ではありませんでした。 'imagecopy()'を実行する前にウォーターマークにGDコマンドを適用する必要があるのでしょうか、あるいは別のプログラムを使って不透明エフェクトを作成する必要がありますか? – mcl

+0

私はあなたのコードを使って、imagecopymerge()をimagecopy()で置き換え、imagecopymerge_alpha()で置き換えました(両方のメソッドで同じ視覚的結果が得られます)。多分、FireworksはPNGを8ビット(256色)として保存しましたか?フルアルファチャンネルの場合、画像を32ビットとして保存する必要があります。そうしないと、PNGはGIF画像のように機能します。 Irfanviewを使用して画像のPNG形式を確認することができます:http://www.irfanview.com/(画像 - >情報)。 –

+0

オプション2は私のために働いた、ありがとう。 –

関連する問題