在 img src $_GET 问题上传递价值


Passing value on img src $_GET issue

我像这样从 img src 传递值:

页一:

<img src="watermark.php?fname=<?php echo $image; ?>" />

然后我 ge 页面上 B 的值:

$fname = $_GET['fname'];
$watermark_img = $passed_fname;
...

由于某种原因,没有显示图像...我在这里错过了什么?

这是页面B的完整代码:

<?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);  
?>

$image是否包含一些特殊字符?

尝试使用 PHP urlencode() 函数:

<img src="watermark.php?fname=<?php echo urlencode($image); ?>/>

在第二页上:

$fname = urldecode($_REQUEST['fname']);

如果传递$fname的值只是名称,则可能需要指定完整路径。

$watermark_img = '/PATH_TO_THE_IMAGE/'.$fname;

直接从地址栏尝试水印 PHP,然后查看源代码。如果在设置 jpeg 标头之前有任何输出,浏览器将无法处理它。你可能有类似的东西

错误行3443234

JPEG图像代码

第一行使其成为无效图像。