3

我的任务是将照片叠加到报纸式图像上,其中照片是一个人,并且它们应该是报纸正面的照片。

我使用 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;
        }

    }
4

2 回答 2

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);
}
于 2013-04-25T22:10:15.820 回答
0

我有同样的问题。

问题在于 PNG 24 位图像。尝试使用PNG 16 位来避免该问题。

也许 Gif 图像也可以工作(未经测试)。Codeigniter 图像库是一个不错的类。

于 2013-05-29T10:01:42.090 回答