如何在从mysql检索到的图像上放置水印

时间:2013-02-20 16:52:13

标签: php mysql database image blob

我需要一些帮助。

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

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

1 个答案:

答案 0 :(得分: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);
?>

<强>数据库

database

图片上的水印

watermark