1

助けが必要です。

以下は、データベースに保存されているすべての画像を取得するコードです。表示されている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;
4

1 に答える 1

1

画像をブロブではなくリンクとして保存する必要があります。ただし、画像データベースが存在するため、次のコードはブロブとして保存されている画像に透かしを入れます。非推奨の mysql_ 関数の代わりに PDO を使用します。

<?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 に答える