現在、QQ Zone や Sina Weibo などのソーシャル ソフトウェアでは、共有される写真のほとんどに透かしが入っています。透かしを追加すると、あたかも独自の個人署名が追加されたかのように、写真がユニークになります。これにより、他人があなたの写真を盗むのを十分に防ぐことができ、また、透かしを見るだけで他人が写真に関する情報を入手できるようになります。今日は写真に透かしを追加して共有する関数を書きました。この機能を使用すると、写真にウォーターマークを追加するのがさらに便利になります。実際、原理は非常に単純です。元の画像は画像であり、透かしも実際には画像です。ただし、一部の透かしには背景が白または透明です。その後、2 つの画像が結合されて透かし画像が形成されます。
1. ウォーターマーク画像を作成するために必要な PHP 関数(1) getimagesize();
(2) imagecreatefromjpeg(); ;
; ( );imagejpeg();imagepng();
特定の関数の使用方法については詳しく説明しません。PHP リファレンス マニュアルを参照してください
2. コード共有 <?phpfunction watermark($maxfile,$minfile){ //获取大小图信息 $maxarr=getimagesize($maxfile); $minarr=getimagesize($minfile); $max_width=$maxarr[0]; $max_height=$maxarr[1]; $max_format=$maxarr[2]; $max_mime=$maxarr['mime']; $min_width=$minarr[0]; $min_height=$minarr[1]; $min_format=$minarr[2]; //$min_mime=$minarr['mime']; //判断大小图格式 switch($max_format){ case 1: $max_createimg="imagecreatefromgif"; $max_outimg="imagegif"; break; case 2: $max_createimg="imagecreatefromjpeg"; $max_outimg="imagejpeg"; break; case 3: $max_createimg="imagecreatefrompng"; $max_outimg="imagepng"; break; } switch($min_format){ case 1: $min_createimg="imagecreatefromgif"; break; case 2: $min_createimg="imagecreatefromjpeg"; break; case 3: $min_createimg="imagecreatefrompng"; break; } //创建大小图资源 $maxim=$max_createimg($maxfile); $minim=$min_createimg($minfile); //两张图的尺寸差 $D_value_x=$max_width-$min_width; $D_value_y=$max_height-$min_height; //添加水印 imagecopy($maxim,$minim,$D_value_x,$D_value_y,0,0,$min_width,$min_height); //保存水印图片 header("content-type:{$max_mime}"); $max_outimg($maxim,"watermark.jpg");}watermark("picture/apple.jpg","picture/copypic.jpg");?>
(2) 小さい画像を大きい画像の右下隅に追加するために、2 つの画像間のサイズの差を計算します (ほとんどの透かしは右下隅に追加されます)。
4. 最適化できる全体的な領域(1) 2 つのスイッチは常に少し多いように感じます。 if文やforループの中に入れれば確実に統合できます。とてもお腹が空いているので、この問題は今後最適化していきます (もちろん自分自身への言い訳です)。
(2) 私が使用した透かしは、直接別の小さな画像です。ただし、実際の透かしは、ほとんどの場合、単語の行、URL、時刻などです。検証コードやウォーターマークを作成する方法として使用できます。次に、透かしに必要なテキストを関数のパラメータとして使用すると、必要な透かしを画像に追加できます。同時に、透かしは画像内で見つける必要はなく、完全に自動的に生成されます。