使用php将文本水印转换为jpg图像

时间:2018-12-06 22:58:36

标签: php watermark

我尝试使用php在图像中添加一些文本,我尝试使用此代码

$jjj = "drag_drop/server/php/files/QBicmbmf78c4qi2kedvhlvlnn8cjn0/UWBR3105.jpg";

                        $im = imagecreatefromjpeg($jjj);
                        $estampa = imagecreatetruecolor(210, 70);
                        imagefilledrectangle($estampa, 0, 0, 210, 69, 0x0000FF);
                        imagefilledrectangle($estampa, 9, 9, 200, 60, 0xFFFFFF);                            
                        imagestring($estampa, 5, 20, 20, 'TheTexr', 0xff0000);

                        $margen_dcho = 10;
                        $margen_inf = 10;
                        $sx = imagesx($estampa);
                        $sy = imagesy($estampa);

                        imagecopymerge($im, $estampa, imagesx($im) - $sx - $margen_dcho, imagesy($im) - $sy - $margen_inf, 0, 0, imagesx($estampa), imagesy($estampa), 40);

                        imagepng($im, "drag_drop/server/php/files/QBicmbmf78c4qi2kedvhlvlnn8cjn0/");
                        imagedestroy($im);

但是任何时候我都会出现此错误:

Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error

Warning: imagecreatefromjpeg(): 'drag_drop/server/php/files/QBicmbmf78c4qi2kedvhlvlnn8cjn0/UWBR3105.jpg' is not a valid JPEG file

没有生成图像,有帮助吗?

1 个答案:

答案 0 :(得分:1)

该错误消息是明确的。 php认为它不是jpeg。也许要查询getimagesize()返回的数组中“ mime”的值? jpeg的值为“ image / jpeg”。另外,imagepng调用不提供文件名(仅提供目录)。运行此代码时,在imagepng中使用jpeg和文件名可以得到很好的结果。

我用在paint.net中创建的jpeg进行了尝试,但令我惊讶的是。 getimagesize [“ mime”]返回png。 MIME和扩展名不匹配可能是用户错误,但仍然引起了错误。

底线:如果php认为它不是jpeg,则会返回错误。