私のウェブサイト(htmlとphpで完全にコード化されています)には、特定のユーザーが画像をアップロードできる機能があります。画像のサイズを変更し、このコードを使用して透かしを入れている:画像をPHPで埋め込む
function watermarkpic($filename) {
ini_set('max_input_time', 300);
require 'config.php';
$watermark = imagecreatefrompng('watermarknew.png');
$watermarkwidth = imagesx($watermark);
$watermarkheight = imagesy($watermark);
if(preg_match('/[.](jpg)$/', $filename)) {
$originalimage = imagecreatefromjpeg($path_to_image_directory . $filename);
} else if (preg_match('/[.](gif)$/', $filename)) {
$originalimage = imagecreatefromgif($path_to_image_directory . $filename);
} else if (preg_match('/[.](png)$/', $filename)) {
$originalimage = imagecreatefrompng($path_to_image_directory . $filename);
}
$originalwidth = imagesx($originalimage);
$originalheight = imagesy($originalimage);
$maxsize = 800;
$imgratio = $originalwidth/$originalheight;
if($imgratio > 1) {
$finalwidth = $maxsize;
$finalheight = $maxsize/$imgratio;
}
else {
$finalheight = $maxsize;
$finalwidth = $maxsize * $imgratio;
}
$finalimage = imagecreatetruecolor($finalwidth,$finalheight);
imagecopyresampled($finalimage, $originalimage, 0,0,0,0,$finalwidth,$finalheight,$originalwidth,$originalheight);
imagecopymerge($finalimage, $watermark, 0, 0, 0, 0, $watermarkwidth, $watermarkheight, 100);
//now move the file where it needs to go
if(!file_exists($path_to_medimage_directory)) {
if(!mkdir($path_to_medimage_directory)) {
die("There was a problem. Please try again!");
}
}
imagejpeg($finalimage, $path_to_medimage_directory . $filename);
}
問題は、透かしが透明な背景を有することであるが、それは、画像上の黒い背景を有するものとして現れます。私はアルファブレンディングなどについて何かを見てきましたが、これが何であるか本当に分かりません。私は何をしているのか理解したいだけでなく、ウォーターマークが透明であるように問題を解決したい。本当の絵がその空間を満たすはずです。
ありがとうございます。
Jpegsはtranparencyをサポートしていません –