我正在传递img src中的值,如下所示:
网页A:
<img src="watermark.php?fname=<?php echo $image; ?>" />
然后我在pageB上找到值:
$fname = $_GET['fname'];
$watermark_img = $passed_fname;
...
出于某种原因,没有图像显示......我在这里错过了什么?
这是pageB完整代码:
<?php
$fname = $_GET['fname'];
$main_img = "Porsche_911_996_Carrera_4S.jpg"; // main big photo / picture
//$watermark_img = "watermark.gif"; // use GIF or PNG, JPEG has no tranparency support
$watermark_img = $fname;
$padding = 3; // distance to border in pixels for watermark image
$opacity = 100; // image opacity for transparent watermark
$watermark = imagecreatefromgif($watermark_img); // create watermark
$image = imagecreatefromjpeg($main_img); // create main graphic
if(!$image || !$watermark) die("Error: main image or watermark could not be loaded!");
$watermark_size = getimagesize($watermark_img);
$watermark_width = $watermark_size[0];
$watermark_height = $watermark_size[1];
$image_size = getimagesize($main_img);
$dest_x = $image_size[0] - $watermark_width - $padding;
$dest_y = $image_size[1] - $watermark_height - $padding;
// copy watermark on main image
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $opacity);
// print image to screen
header("content-type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
?>
答案 0 :(得分:1)
$image
是否包含一些特殊字符?
尝试使用PHP urlencode()
功能:
<img src="watermark.php?fname=<?php echo urlencode($image); ?>/>
在第二页上:
$fname = urldecode($_REQUEST['fname']);
答案 1 :(得分:0)
如果您在$ fname上传递的值只是名称,则可能需要指定完整路径。
$watermark_img = '/PATH_TO_THE_IMAGE/'.$fname;
答案 2 :(得分:0)
直接从地址栏尝试水印PHP,然后查看源代码。如果在设置jpeg标头之前有任何输出,浏览器将无法处理它。你可能有像
这样的东西错误行3443234
JPEGIMAGECODE
第一行使其成为无效图像。