1

我需要一些帮助。

下面是我的代码,它检索存储在我的数据库中的所有图像,如果它运行保存为index.php的第一块代码,它正在显示,但我想在检索到 ie 后添加水印;在显示这些图像之前。是否可以在之后集成水印,或者我们只能在之前这样做?

<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$query = mysql_query("SELECT * FROM images ORDER BY id DESC") or die(mysql_error());
while( $result = mysql_fetch_array($query) ){
$id = $result['id'];
echo "<img src=img.php?id=$id>";
?>

在 img.php 中

<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$id = $_REQUEST['id'];
$query = mysql_query("SELECT * FROM images WHERE id='$id'") or die(mysql_error());
$image = mysql_fetch_assoc($query);
$image1 = $image['image'];
header('Content-type:image/jpeg');
echo $image1;
4

1 回答 1

1

您应该将图像存储为链接而不是 blob。但是由于现有的图像数据库,以下代码会将水印放在存储为 blob 的图像上。它使用 PDO 而不是已弃用的 mysql_ 函数。

<?php
function ImageStringCenter($image, $fontSize, $lineNumber, $totalLines, $text, $color ) { 
    $centerX = ceil( ( imagesx($image) - ( ImageFontWidth($fontSize) * strlen($text) ) ) / 2 ); 
    $centerY = ceil( ( ( imagesy($image) - ( ImageFontHeight($fontSize) * $totalLines ) ) / 2)  + ( ($lineNumber-1) * ImageFontHeight($fontSize) ) ); 
    ImageString($image, $fontSize, $centerX, $centerY, $text, $color ); 
} 
require("dbinfo.php");
// Opens a connection to a mySQL server
$connection=mysql_connect ($host, $username, $password);
if (!$connection) {
  die("Not connected : " . mysql_error());
}

// Set the active mySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ("Can\'t use db : " . mysql_error());
}

$id = 1;
$query = mysql_query("SELECT * FROM images WHERE id='$id'") or die(mysql_error());
$image = mysql_fetch_assoc($query);
$image1 = $image['image'];
//Use imagecreatefrompng,imagecreatefromgif, imagecreatefromjpeg ,etc for othertypes
$im = imagecreatefromstring($image1);////For blobs
$text_color = imagecolorallocate($im, 266, 266, 266);
ImageStringCenter($im, 5, 1, 2,  "Watermark", $text_color);
ImageStringCenter($im, 5, 2, 2,  "20/02/2013", $text_color);
header("Content-Type: image/png");//blob .png file
imagepng($im);
imagedestroy($image1);
?>

数据库

数据库

图片上的水印

水印

于 2013-02-21T00:56:20.113 回答