-1

我有下面的代码从数据库加载图像。有 600 多行图像已插入数据库。我需要可以执行这些操作的脚本:

步骤 1) 从数据库加载图像步骤 2) 通过放置水印处理图像步骤 3) 将图像输出到浏览器。

我有下面的代码,加载并显示图像。但我不知道如何做水印。

$dbconn = @mysql_connect($mysql_server,$mysql_manager_id,$mysql_manager_pw) or exit("SERVER Unavailable"); 
@mysql_select_db($mysql_database,$dbconn) or exit("DB Unavailable"); 

$sql = "SELECT type,content FROM upload WHERE id=". $_GET["imgid"]; 

$result = @mysql_query($sql,$dbconn) or exit("QUERY FAILED!"); 

$contenttype = @mysql_result($result,0,"type"); 
$image = @mysql_result($result,0,"content"); 


header("Content-type: $contenttype"); 
echo $image;

mysql_close($dbconn); 

?>

请帮忙...

4

4 回答 4

1

您可以从 php.net 自行学习如何操作图像,或者您只需获得一个如下所示的包:http: //pear.php.net/package/Image_Tools (常用图像操作的工具集合。可用的扩展是混合、边框、选取框、蒙版、交换、缩略图和水印。)

于 2012-05-22T00:50:21.033 回答
0

以与 SELECT 类型内容相同的方式调用图像怎么样?

从您的数据库中选择带有图像路径的图像,然后对其进行样式设置,使其浮动在您的信息上。您还可以对水印图像进行硬编码,因为它始终是您可以重复的相同图像。您不会看到您的信息,但如果您在图像上设置不透明度,您可以看穿它:

#img.watermark {
    float:left;
    opacity:0.1;
    z-index:1;
}

这只是关于如何做到这一点的一个想法,但应该工作得很好!

于 2012-05-22T00:49:45.217 回答
0

看一眼

imagecopymerge()

从 php 的图形库中,它应该可以满足您的需求。

http://www.php.net/manual/en/function.imagecopymerge.php

于 2012-05-22T19:09:21.453 回答
0

最后我得到了解决方案,这是代码:

<?php

$dbconn = @mysql_connect($mysql_server,$mysql_manager_id,$mysql_manager_pw) or exit("SERVER Unavailable"); 
@mysql_select_db($mysql_database,$dbconn) or exit("DB Unavailable"); 

$sql = "SELECT id, original_name, type, content FROM upload WHERE id=". $_GET["imgid"]; 

$result = @mysql_query($sql,$dbconn) or exit("QUERY FAILED!"); 

$fileID = @mysql_result($result,0,"id");
$contenttype = @mysql_result($result,0,"type"); 
$filename = @mysql_result($result,0,"original_name");
$image = @mysql_result($result,0,"content"); 


$fileXtension = pathinfo($filename, PATHINFO_EXTENSION);
$finalFileName = $fileID.".".$fileXtension;

// put the file on temporary folder
$filePutPath = "/your/temporary/folder/".$finalFileName;

// put the contents onto file system
file_put_contents($filePutPath, $image);


// get the watermark image
$stamp = imagecreatefrompng('../images/watermark.png');

switch($fileXtension)
{
  case 'JPEG':
  case 'JPG' :
  case 'jpg' :
  case 'jpeg':
    $im = imagecreatefromjpeg($filePutPath);
  break;

  case 'gif' :
  case 'GIF' :
    $im = imagecreatefromgif($filePutPath);
  break;

  case 'png' :
  case 'PNG' :
    $im = imagecreatefromgif($filePutPath);
  break;

  default :
  break;
}

list($width, $height) = getimagesize($filePutPath);

// set area for the watermark to be repeated
imagecreatetruecolor($width, $height);

// Set the tile (Combine the source image and the watermark image together)
imagesettile($im, $stamp);

// Make the watermark repeat the area
imagefilledrectangle($im, 0, 0, $width, $height, IMG_COLOR_TILED);


header("Content-type: $contenttype"); 

// free the memory
imagejpeg($im);
imagedestroy($im);

// delete the file on temporary folder
unlink($filePutPath);

mysql_close($dbconn); 
?>
于 2012-05-23T03:55:40.753 回答