使用php为图像添加水印
我的网站(以html和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,$finalwidth,$finalheight,$originalwidth,$originalheight); imagecopymerge($finalimage,$watermark,$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); } 问题是水印具有透明背景,但它在图像上显示为黑色背景.我见过关于alpha混合等的东西,但我真的不知道这是什么.我想了解我在做什么,以及解决问题,以便水印是透明的.真实的画面应该填补空间. 提前致谢. 解决方法
斯科特,这里可以发生很多事情.
>您需要确保使用未编入索引的Alpha透明度保存PNG.索引透明度基本上表示“此颜色(可能是黑色)将在整个图像中显示为透明.”当浏览器或图像编辑器读取它时,它可能是透明的,但特别是如果你将它与J??PG合并,透明度将不会受到尊重.如果您想了解更多信息,请尝试http://www.idux.com/2011/02/27/what-are-index-and-alpha-transparency/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |