0

誰かがあなたのウェブサイトから画像をダウンロードしたときに透かしを追加することはできますか? はいの場合、それを行うための最良の方法は何ですか?

前もって感謝します。

4

4 に答える 4

3

あなたがそれをするときを意味Right Click -> Saveするなら、それは私が恐れていることではありません。
一般的に、専用のダウンロード ボタンまたはリンクがあることを意味する場合は、必要な透かしを追加し、ダウンロード用の新しい画像ファイルを生成する PHP ファイルを介して要求をリダイレクトすることができます。

于 2012-11-14T10:53:10.027 に答える
2

もっと良い考えがあります。

人々が右クリックして名前を付けて保存を選択したときにものを保護したいと言ったので。というわけで、9gagと同じように使えます。

フッターのサイズが固定された画像を作成します。下マージンのフッターのサイズの負のマージン親を使用します。ビューから隠されている透かしoverflow: hidden;がユーザーに見えないようにします。ユーザーが右クリックして画像として保存すると、透かしが表示されます。全体として、画像に透かしのない場所はありません。したがって、画像をアップロードするときに、上記の手法を使用して透かしを追加します。


または、別の透かし入りの画像を作成したい場合は、ホットリンクされたファイルを確認してから、透かし入りの画像を提供できます。

header("content-type: image/jpeg");
if (!isset($_SERVER['HTTP_REFERER'])){die("alert('Restricted Access!');");};
$_u=parse_url($_SERVER['HTTP_REFERER']);
$_u=preg_replace("/(www.)/i","",strtolower($_u['host']));
$_i=$_SERVER['HTTP_HOST'];
$_i=preg_replace("/(www.)/i","",strtolower($_i));
if ($_u != $_i){
   //handle this with gd or redirect
}

このチュートリアルの指示に従って、画像に透かしを作成します。

于 2012-11-14T11:16:53.863 に答える
1

php http://www.php.net/manual/en/function.imagecopymerge.phpimagecopymerge()で透かしを広告する関数を使用することをお勧めしますが、前述のように、ブラウザーに読み込む前に追加する必要があります。ユーザーがそれらをダウンロード (右クリック) すると、既にブラウザーに提供されています (通常はキャッシュにあります)。

http_refererもちろん、すべての画像を動的に提供し、画像の読み込みを確認することもできます。そして、それが見つからないか、予期されたものではない場合 (ファイルが Web ページからロードされていない場合) は、透かしを追加しますが、それは確実ではありません。

于 2012-11-14T10:56:27.450 に答える
1

このサイトと同じ次の URL を確認してください。これは非常に役立ちます。

http://www.phpjabbers.com/put-watermark-on-images-using-php-php20.html

以下、上記リンクより

 <?php
function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) { 
   list($width, $height) = getimagesize($SourceFile);
   $image_p = imagecreatetruecolor($width, $height);
   $image = imagecreatefromjpeg($SourceFile);
   imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height); 
   $black = imagecolorallocate($image_p, 0, 0, 0);
   $font = 'arial.ttf';
   $font_size = 10; 
   imagettftext($image_p, $font_size, 0, 10, 20, $black, $font, $WaterMarkText);
   if ($DestinationFile<>'') {
      imagejpeg ($image_p, $DestinationFile, 100); 
   } else {
      header('Content-Type: image/jpeg');
      imagejpeg($image_p, null, 100);
   };
   imagedestroy($image); 
   imagedestroy($image_p); 
};
?>
<?php
$SourceFile = 'image1.jpg';//image path
$DestinationFile = 'images/image1-watermark.jpg'; //Out put path
$WaterMarkText = 'Copyright Watermark text';
watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile);
?>
于 2012-11-14T10:54:54.580 に答える