我的任务是将照片叠加到报纸上,照片是一个人的照片,而这些照片就是报纸正面的照片。
我使用codeigniter图像库用照片为模板添加水印。它工作正常但是当它叠加时它会扭曲或移除照片中的一些像素
您可以在照片的左上方看到它 -
我也正在调整图像的大小为500像素,模板中的图像空间大约为1400像素
以下是我用于覆盖图片的代码
private function overlay($template, $source_image)
{
echo $template;
// $config = array();
$config['source_image'] = $template;
$config['image_library'] = 'gd2';
$config['wm_type'] = 'overlay';
$config['wm_overlay_path'] = $source_image;
$config['wm_vrt_alignment'] = 'top';
$config['wm_hor_alignment'] = 'left';
$config['wm_hor_offset'] = '18px';
$config['wm_vrt_offset'] = '843px';
$config['quality'] = '100%';
$this->image_lib->initialize($config);
$result = $this->image_lib->watermark();
if($result){
return $result;
}
else
{
echo $this->image_lib->display_errors();
return false;
}
}
答案 0 :(得分:1)
由于没有答案,我最终使用了原生的php功能。
如果您希望将文件保存到服务器,则imgpng有第二个参数。由于只需点击按钮即可打印,我只是提示浏览器下载
private function overlay2($template, $source_image)
{
$src = imagecreatefromjpeg($source_image);
$dest = imagecreatefrompng($template);
imagecopymerge($dest,$src, 90, 910, 0, 0, 1511, 1075, 100); //have to play with these numbers for it to work for you, etc.
header('Content-Disposition: Attachment;filename=newspaper.png');
header('Content-type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
}
答案 1 :(得分:0)
我遇到了同样的问题。
问题出在PNG 24位图像上。 尝试使用 PNG 16位来避免此问题。
也许Gif图像也能正常工作(未经测试)。 Codeigniter图像库是一个很好的类。