【问题标题】:php - creating img watermark [duplicate]php - 创建img水印[重复]
【发布时间】:2017-03-14 12:46:19
【问题描述】:
<img id='imgt' src='../img/crop00.jpg' alt='img'>
<img id='imgtest' src='../img/crop00.jpg' alt='img'>

js

...
$.ajax({
    url: 'pro20.php',
    type: 'post',
    data: {...},
    success: function(data) {
        $('#imgtest').attr('src', data);
    }
});

php

error_reporting(E_ALL);
ini_set('display_errors', 1);

GD 库已打开 - 通过print_r(gd_info()); 进行检查

pro20.php

我正在尝试运行 this 代码

$stamp = imagecreatefrompng('img/wmark.png');
$im = imagecreatefromjpeg('img/test.jpg');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

echo imagepng($im);  // my added line 28

结果:
- #imgtest 为空白,
- 在文件系统中没有创建新的 img
- 错误日志:

[:error] [pid 2736:tid 1580] [client ::1:59185] PHP Warning: imagepng(): supplied resource is not a valid Image resource in ... pro20.php on line 28,

【问题讨论】:

  • 你应该使用这个image.intervention.io让生活更轻松
  • @RajSharma,感谢您提供的信息,但我需要知道上述代码有什么问题。
  • 会不会是你 imagedestroy($im); 然后尝试在 echo imagepng($im); 中使用 $im ???
  • 您不必发布来获取图像,因为如果您查看 php 代码,您会看到它正在返回图像。你可以这样做 $('#imgtest').attr('src', 'url/of/your/pro20.php');但是如果你想让它动态化。使用获取参数而不是发布。在 url 中传递图像的名称(如果传递 url,则在客户端对它们进行 urlencode) $('#imgtest').attr('src', 'url/of/your/pro20.php?png=stamp&jpg=main ');
  • 同时删除你添加的'echo'行

标签: php gd watermark


【解决方案1】:

代码没有问题。问题可能是一个(或两个图像)未正确加载:

$stamp = imagecreatefrompng('img/wmark.png');
$im = imagecreatefromjpeg('img/test.jpg');

检查img/wmark.pngimg/test.jpg 是否存在并且是有效图像。

我已经测试了您的代码(稍作修改):

<?php

$stamp = imagecreatefrompng('wmark.png');
$im = imagecreatefromjpeg('img.jpg');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

echo imagepng($im);

我得到了这个:

您的代码没有问题。可能的问题是您的图像可能不是有效的 png / jpg 图像。请验证这一点。

【讨论】:

  • 这是经过测试的,当然
  • 您的代码没有问题。可能的问题是您的图像可能不是有效的 png / jpg 图像。请验证这一点。
猜你喜欢
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多