-1

DBから画像をロードする以下のコードがありました。600行を超える画像がDBに挿入されています。これらのアクションを実行できるスクリプトが必要です。

ステップ1)DBから画像をロードしますステップ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

を見てみましょう

imagecopymerge()

phpのグラフィックライブラリから、それはあなたが探していることをするはずです。

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

于 2012-05-22T19:09:21.453 に答える
0

SELECT 型の content と同じ方法で画像を呼び出してみませんか?

データベースから imagepath を使用して画像を選択し、スタイルを設定して、情報の上に浮かぶようにします。透かし画像は、繰り返し使用できる同じ画像であるため、ハードコードすることもできます。情報は表示されませんが、画像に不透明度を設定すると、透けて見えるようになります。

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

これはそれを行う方法の 1 つのアイデアにすぎませんが、非常にうまく機能するはずです。

于 2012-05-22T00:49:45.217 に答える
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 に答える