ホームページ  >  記事  >  バックエンド開発  >  PHP イメージに中国語の透かしを追加するためのコード共有_PHP チュートリアル

PHP イメージに中国語の透かしを追加するためのコード共有_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:15:13796ブラウズ

例 1

コードをコピーします コードは次のとおりです:

Header("Content-type: image/png") /*画像が表示されることをブラウザに通知します。 Output*/
$im = imagecreate(400, 300); /*画像のサイズを定義します*/
$gray = ImageColorAllocate($im, 235, 235, 235); , 128, 255);
$fontfile = "simkai.ttf";
/* $fontfile フォントのパスは、オペレーティング システムに応じて、simhei.ttf (黒体)、SIMKAI.TTF (通常のスクリプト) になります。 、SIMFANG.TTF (宋朝模倣)、SIMSUN.TTC (宋スタイル) &新宋朝)、および GD*/
$str = iconv('GB2312','UTF-8','中国語透かし' でサポートされているその他の中国語フォント); /*gb2312 文字セットを UTF-8 文字に変換*/
ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str);
/* 中国語のウォーターマークを追加*/
Imagepng( $im);
ImageDestroy($im);


例 2


コードは次のとおりです: // ***** ****************** **************** //
// 関数: 画像にテキストを追加します
// パラメータ: $img 画像ファイル名
// $new_img 画像ファイル名が空の場合は保存します 画像を保存しないことを示します
// $text string content
// text_size 文字列サイズ
// text_angle フォント文字列出力角度
// text_x 文字列出力 x 座標
// text_y 文字列出力 y 座標
// $ text_font フォントファイル名
// $r, $g, $b 文字列色 RGB 値
// *********** *************** **************** //
function img_text($img, $new_img, $text, $text_size, $ text_angle, $text_x, $text_y, $text_font, $r, $g, $b){
$text=iconv("gb2312","UTF-8",$text);
Header("コンテンツタイプ: 画像/gif");
$im = @imagecreatefromstring(file_get_contents($img) ) or die ("画像を開けませんでした!");
$color = ImageColorAllocate($im, $r,$g,$b);
//ImageTTFText(int im, int size, int angle, int x, int y , intcol, string fontfile, string text):
//この関数は、TTF (TrueType フォント) フォント テキストを画像に書き込みます。
//パラメータ: size はフォントのサイズです。
// angle は時計回りに計算されたフォントの角度です。0 度は水平 (左から右)、90 度はテキストを下から上に示します。 // 2 つのパラメータ x と y はテキストの座標値です (原点は左上隅です)
//col はテキストの色です
// fontfile はフォント ファイルの名前です。
// text は文字列の内容です。
ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text);
if ($new_img==""): // しないでください。画像を保存、表示のみ
else:
ImageGif($im,$new_img); // 画像を保存しますが、表示されません
endif; // グラフィックを終了し、メモリ領域を解放します
? >


例 3



コードをコピーします

コードは次のとおりです:

/*
* 関数: PHP 画像透かし (透かしは画像またはテキストをサポートします)
* パラメーター:
* $groundImage 背景画像、つまり透かしを入れる必要がある画像は、現在 GIF のみをサポートしています。 JPG、PNG 形式 ;
* $waterPos ウォーターマークの位置、10 個の状態があり、0 はランダムな位置です
* 1 は左上、2 は中央上、3 は右上です。 、5 は中央の中央、6 は右側にあります
* 7 は左側の下部、8 は中央の下部、9 は右側の下部を意味します
* $waterImage 画像の透かし。つまり、透かしとして使用される画像は、現在 GIF、JPG、および PNG 形式のみをサポートします
* $waterText テキスト透かし、つまり、テキストは透かしとして使用されます。ASCII コードはサポートされますが、中国語はサポートされません
* $textFont テキストのサイズ、値は 1、2、3、4、または 5、デフォルトは 5 です。
* $textColor テキストの色、値は 16 進数の色の値、デフォルトは #FF0000 (赤) です。 * 注: GD 2.0 をサポート、FreeType、GIF Read、GIF Create、JPG、PNG をサポート
* $waterImage と $waterText を同時に使用しないことをお勧めします 使用するには、どちらかを選択するだけで、$waterImage が最初に使用されます。
* $waterImage が有効な場合、パラメータ $waterString、$stringFont、および $stringColor は無効になります。
* 透かし入り画像のファイル名は$groundImageと同じです。
* 著者:longware @ 2004-11-3 14:15:13
*/
function imageWaterMark($groundImage,$waterPos=0,$waterImage=””,$waterText=””,$textFont=5,$textColor =”#FF0000″)
{
$isWaterImage = FALSE;
$formatMsg = 「このファイル形式はまだサポートされていません。画像を GIF、JPG、または PNG 形式に変換してください。”;
//ウォーターマークファイルを読み込む
if(!emptyempty($waterImage) && file_exists($waterImage))
{
$water_info = getimagesize($waterImage);
$water_w = $water_info[ 0 ];//ウォーターマーク画像の幅を取得
$water_h = $water_info[1];//ウォーターマーク画像の高さを取得
switch($water_info[2])//ウォーターマーク画像の形式を取得
{
ケース 1:$water_im = imagecreatefromgif($waterImage);break;
case 2:$water_im = imagecreatefromjpeg($waterImage);break;
case 3:$water_im = imagecreatefrompng($waterImage);break; $formatMsg);
}
}
//背景画像を読み込みます
if(!emptyempty($groundImage) && file_exists($groundImage))
{
$ground_info = getimagesize($groundImage);
$ground_w = $ground_info[ 0];// 背景画像の幅を取得
$ground_h = $ground_info[1];// 背景画像の高さを取得
switch($ground_info[2])// 背景画像の形式を取得
{
case 1:$ground_im = imagecreatefromgif($ groundImage);break;
case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
case 3:$ground_im = imagecreatefrompng($groundImage);break; ($formatMsg);
}
}
else
{
die("透かしを入れる必要がある画像が存在しません!")
}
//透かしの位置
if($isWaterImage)//画像の透かし
{
$w = $water_w;
$h = $water_h;
$label = "画像";
else//テキスト透かし
{
$temp = imagettfbbox(ceil($textFont*5),0,". /cour.ttf",$waterText);//TrueType フォントを使用してテキストの範囲を取得
$w = $temp[2] - $temp[6];
$h = $temp[3] - $temp[7] ;
unset($temp);
$label = "テキストエリア";
if( ($ground_w<$w) || ($ground_h<$h) )
{
echo "ウォーターマークを付ける必要がある画像はウォーターマーク「.$label」より長いです。小さいため、ウォーターマークを生成できません。 ”;
return;
}
switch($waterPos)
{
case 0://random
$posX = rand(0,($ground_h); - $h));
break;
case 1://1 は左上を意味します
$posY = 0;
case 2://2 は上中央を意味します
$posX = ($
$posY = 0;
$posY = 0;
$posY = 0; ://4 は中央左を意味します
$posX = 0;
$posY = ($ground_h - $h) / 2;
case 5://5 は中央中央を意味します
$posX = ($ground_w - $w) ) / 2;
$posY = ($ground_h - $h) / 2;
case 6://6 は中央の右です
$posX = $ground_w - $w; $h) / 2;
case 7://7 は左下
$posY = $ground_h - $h;
case 8://8 は下中央
$ posX = ($ground_w - $w) / 2;
$posY = $ground_h - $h;
case 9://9 は右下です
$posX = $ground_w - $w; ground_h - $h;
default://random
$posX = rand(0,($ground_h - $h) ; posY, 0 , 0, $water_w,$water_h);//ウォーターマークを対象ファイルにコピー
}
else//テキストウォーターマーク
{
if( !emptyempty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2));
$G = hexdec(substr($textColor,3,2)); }
else
{
die("ウォーターマークのテキストの色の形式が正しくありません。”);
}
imagestring ($ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
}
// 水印後の画像を生成
@unlink($groundImage);
switch($ground_info[2])//背景画像取得の格式
{
case 1:imagegif($ground_im,$groundImage);break;
ケース 2:imagejpeg($ground_im,$groundImage);break;
ケース 3:imagepng($ground_im,$groundImage);break;
デフォルト:die($errorMsg);
}
//释放内存
if(isset($water_info)) unset($water_info);
if(isset($water_im)) imagedestroy($water_im);
unset($ground_info);
imagedestroy($ground_im);
}
//——————————————————————————————
$id=$_REQUEST['id'];
$num = count($_FILES['ユーザーファイル']['名前']);
print_r($_FILES['ユーザーファイル']);
print_r($_FILES['ユーザーファイル']['名前']);
$num をエコーし​​ます。
エコー「
」;
if(isset($id)){
for($i=0;$iif(isset($_FILES) && !emptyempty($_FILES['userfile']) && $ _FILES['userfile']['size']>0)
{
$uploadfile = “./”.time().”_”.$_FILES['userfile'][name][$i];
エコー「
」;
echo $uploadfile;
if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))
{
echo “OK
”;
//文字水印
//imageWaterMark($uploadfile,5,”",”HTTP://www.lvye.info”,5,”#cccccc”);
//图片水印
$waterImage=”logo_ok1. gif”;//水印图片路径
imageWaterMark($uploadfile,9,$waterImage);
echo “”;
}
else
{
echo “失敗
”;
}
}
}
}
?>

for($a=0;$a<$id;$a++){
echo “文件:
” ;
}
?>



代 4
复制代代码如下:

中国語の透かしを追加
/*------------------------------------- --- ------------------------
**説明: これは、指定された画像に下部の透かしを追加するために使用されるカスタム クラスです (画像表示領域を占有しない)、オブジェクト呼び出しを作成する必要があります
** 作成日: 2007-10-09
** 更新日: 2007-10-09
** 説明: 1. gd ライブラリのサポートと iconv サポートが必要です (php5は既に含まれているためロードする必要はありません)
2. jpg/jpeg/gif/png の 3 つのタイプの画像にのみ適しており、他のタイプは処理されません
3. 画像が配置されているディレクトリの属性に注意してください。書き込み可能である必要があります
4. 呼び出し例:
$objImg = new MyWaterDown Chinese();
$objImg->FileName = "1.jpg"; ;テキスト = "HAHAKONGJIAN[url]HTTP://HI.BAIDU.COM/LYSONCN[/ url]";
$objImg->フォント = "./font/simhei.ttf"; ();
**メンバー関数:
---------- ---------------------------- -------------------- ---*/
class MyWaterDown Chinese{
var $Path = "./"; //画像が保存されているディレクトリの相対パスこのクラスを呼び出すページに相対的に配置されます
var $FileName = ""; //「1.jpg」などの画像の名前
var $Text = ""; //追加される透かしテキスト画像は中国語をサポートします
var $TextColor = "#ffffff"; //テキストの色、GIF 画像の場合、フォントの色は黒のみです
var $TextBgColor = "#000000"; bar
var $Font = "c://windows//fonts//simhei.ttf"; //フォント格納ディレクトリ、相対パス
var $OverFlag = true; //元の画像を上書きするかどうか、デフォルトは上書きしない場合は、元の画像ファイル名の後に「1.jpg」=>「1_water_down.jpg」のように自動的に追加されます
var $BaseWidth = 200;透かしテキストが追加される前に、少なくとも 200 以上である必要があります。
//----------------------------------------------- --- -------------------
//関数: クラスコンストラクター (php5.0 以降)
//パラメータ: なし
//戻り値: なし
function __construct(){;}
//----------------------------------------------------- - -------------------------
//関数: クラス デストラクター (php5.0 以降)
//パラメータ: なし
//Return:なし
function __destruct(){;}
//--------------------------------- ---- ----------------------------
//--------------- -- ------------------------
//関数: オブジェクト実行関数、画像に透かしを追加
//パラメータ: なし
//戻り値: なし
function Run ()
{
if($this->FileName == "" || $this->Text == "")
return;
//GD ライブラリがインストールされているかどうかを検出
if(false) == function_exists(" gd_info"))
{
echo "システムには GD ライブラリがインストールされていないため、画像にウォーターマークを追加できません。"
return;
//入力画像と出力画像のパス名を設定します
$ arr_in_name =explode(".",$this ->ファイル名);
//
$inImg = $this->Path.$this->ファイル名
$outImg = $inImg = $this; ->Path.$arr_in_name[0] ."_tmp.".$arr_in_name[1]; //一時的に処理された画像、非常に重要
if(!$this->OverFlag)
$outImg = $this->; Path.$arr_in_name[0]." _water_down.".$arr_in_name[1];
//画像が存在するかどうかを確認します
if(!file_exists($inImg))
return; $groundImageType = @getimagesize($inImg);
$imgWidth = $groundImageType[1];
$imgWidth return;
//画像がjpg/jpeg/gif/pngでない場合は処理されません
switch($imgType)
{
case 1:
$image = imagecreatefromgif($inImg);
$this->TextBgColor = " #ffffff"; //GIF 画像のフォントは黒のみなので、背景色は白に設定されます
break; :
$image = imagecreatefromjpeg($inImg);
break;
$image = imagecreatefrompng ($inImg);
デフォルト:
break; = @imagecolorallocate($image,hexdec(substr($this->TextColor,1,2)) ,hexdec(substr($this->TextColor,3,2)),hexdec(substr($this->TextColor,1,2) TextColor,5,2))); //テキストの色
//透かしの高さが下部で増加します
$newHeight = $imgHeight+20;
$objTmpImg = @imagecreatetruecolor($imgWidth) ,$newHeight);
$colorBg = @imagecolorallocate($objTmpImg,hexdec(substr($this->TextBgColor,1,2)),hexdec(substr($this->TextBgColor,3,2)),hexdec (substr($this->TextBgColor,5,2))); //背景色
//Fill 画像の背景色
@imagefill ($objTmpImg,0,0,$colorBg);元の画像を一時画像に
@imagecopy($objTmpImg,$image,0,0,0,0,$imgWidth ,$imgHeight);
//書き込むウォーターマークテキストオブジェクトを作成します
$objText = $this- >createText($this->Text);
//書き込むウォーターマークテキストの位置を計算
$y = $newHeight-5;
//テキストウォーターマークを書き込む
@imagettftext( $objTmpImg,10,0,$x,$y,$color,$this->Font,$objText);
//新しい画像、一時画像を生成
switch($imgType)
{
case 1:
imagegif ($objTmpImg,$tmpImg);
ケース 2:
imagejpeg($objTmpImg,$tmpImg);
デフォルト:
return; ;
break;
}
//リソースを解放
@imagedestroy($objTmpImg);
//ファイルの名前を変更します
if($this->OverFlag)
//元の画像
@unlink($inImg);
@rename($tmpImg,$outImg);
else
{
//元の画像を上書きしません
@rename($tmpImg,$outImg); }
//------------------------ -------------
//関数: 透かしテキストオブジェクトを作成する
//パラメータ: なし
//Return: 作成されたウォーターマーク テキスト オブジェクト
function createText($instring)
{
$outstring =""
for($i=0;$) i<$max;$i++)
{
$h=ord($instring[$i]);
if( $h>=160 && $i<$max-1)
{
$outstring .= "& #".base_convert(bin2hex(iconv("gb2312","ucs-2",substr($instring,$i, 2))),16,10).";";
$i++;
}
else
{
$outstring .= $instring[$i]
}
}
$outstring
}
}/ /class

;



http://www.bkjia.com/PHPjc/326177.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/326177.html

技術記事

例 1 次のコードをコピーします。 ?php Header("Content-type: image/png"); /*画像を出力することをブラウザに通知*/ $im = imagecreate(400, 300);画像のサイズ* /$gray = ImageCol...





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。