ホームページ > php教程 > php手册 > PHP画像に中国語の透かしを追加してコード共有を実現

PHP画像に中国語の透かしを追加してコード共有を実現

WBOY
リリース: 2016-06-13 11:57:02
オリジナル
1046 人が閲覧しました

例 1

コードをコピー コードは次のとおりです。


Header(" Content-type : image/png"); /*画像を出力することをブラウザに通知*/
$im = imagecreate(400, 300); /*画像のサイズを定義*/
$gray = ImageColorAllocate($im, 235, 235, 235);
$pink = ImageColorAllocate($im, 255, 128, 255);
$fontfile = "simkai.ttf"; $fontfile フォント パス (操作に応じて) システムに応じて、simhei.ttf (Helvetica)、SIMKAI.TTF (Italic)、SIMFANG.TTF (Imitation Songdynasty)、SIMSUN.TTC (Song Diagnostic & New Song Empire) になります。 ) および 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 文字列内容
// 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("Content-type: image/gif"); @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 度はテキストを下から右に向かって計算します。 top ;
// 2 つのパラメータ x と y はテキストの座標値です (原点は左上隅です)。 fontfile はフォント ファイルの名前です。
//text は文字列の内容です。
ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text);
if ($new_img==""):
ImageGif($im) ); // 画像を保存せず、表示のみします。
else:
ImageGif($im,$new_img) // 画像を保存します。
endif; $im); / /グラフィックスを終了し、メモリ領域を解放します
}
?>


例 3




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


/*
* 関数: PHP 画像透かし (透かしは画像またはテキストをサポートします)
* パラメーター:
* $groundImage 背景画像。透かし付きの画像は現在、GIF、JPG、および PNG 形式のみをサポートしています。
* $waterPos 透かし位置、10 個の状態があり、0 はランダムな位置です。
* 1 は左上、2 は中央上、3 は上です。中央右;
* 4 は中央が左側にあることを意味し、5 は中央が右側にあることを意味します
* 7 は下が左側にあることを意味します。一番下が中央、9 が右側です。
* $waterImage 画像透かし、つまり透かしとして使用される画像は、現在 GIF、JPG、PNG 形式のみをサポートします。
* $waterText テキスト透かし。つまり、テキストは透かしとして使用されます。ASCII コードをサポートします。中国語はサポートしません。
* $textFont テキスト サイズ。値は 1、2、3、4 または 5、デフォルトは 5 です。 * $textColor テキストの色、値は 16 進数の色の値、デフォルトは #FF0000 (赤);
*
* 注: GD 2.0 をサポート、FreeType、GIF 読み取り、GIF 作成、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))
{
$isWaterImage = TRUE
$water_info = getimagesize($waterImage) );
$water_w = $water_info[0];//ウォーターマーク画像の幅を取得
$water_h = $water_info[1];//ウォーターマーク画像の高さを取得
switch($ Water_info[2 ])//ウォーターマーク画像の形式を取得します
{
case 1:$water_im = imagecreatefromgif($waterImage);break;
case 2:$water_im = imagecreatefromjpeg($waterImage); Break;
case 3:$water_im = imagecreatefrompng($waterImage);break;
default:die($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])//背景画像の形式を取得します
{
ケース 1:$ground_im = imagecreatefromgif($groundImage);break;
ケース 2:$ground_im = imagecreatefromjpeg($groundImage);break;
ケース 3:$ground_im = imagecreatefrompng($groundImage);break; >default:die($formatMsg);
}
}
else
{
die("透かしを入れる必要のある画像が存在しません。 ”);
}
//ウォーターマーク位置
if($isWaterImage)//画像ウォーターマーク
{
$w = $water_w; >$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_w - $w)) ;
$posY = rand(0,($ground_h - $h));
break;
ケース 1://1 は左上です
$posY = 0;
break;
ケース 2://2 は上中心です
$posY = 0;
case 3://3 は右上です
$posX = $ground_w - $w;
break
case 4://4 は中央です。 left
$posX = 0;
$posY = ($ground_h - $h) / 2;
case 5://5 は中央にあります
$posX = ($ground_w - $w) / 2;
$posY = ($ground_h - $h) / 2;
ケース 6://6 は中央右です
$posX = $ ground_w - $ w;
$posY = ($ground_h - $h) / 2;
break; 7://7 は左下です
$posX = 0; posY = $ground_h - $h;
break;
ケース 8://8 は下中央にあります
$posY = $ground_h - $ h;
break;
case 9://9 は右下です
$posY = $ground_h - $h; 🎜>default://random
$posX = rand(0,($ground_w - $w));
$posY = rand(0,($ground_h - $h));
}
//画像のカラーブレンドモードを設定します
imagealphablending($ground_im, true);
if($isWaterImage)//画像ウォーターマーク
{
imagecopy($ ground_im , $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//ウォーターマークを対象ファイルにコピー
}
else//テキストウォーターマーク
{
if( ! emptyempty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2)); ( $textColor,3,2));
$B = hexdec(substr($textColor,5))
}
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['userfile']['name']);
print_r($_FILES['userfile']);
print_r($_FILES['userfile']['name']);
エコー $num;
エコー「
」;
if(isset($id)){
for($i=0;$i<$id;$i ){
if(isset($_FILES) && !emptyempty($_FILES[' userfile']) && $_FILES['userfile']['size']>0)
{
$uploadfile = “./”.time().”_”.$_FILES['userfile' ][名前][$i];
エコー「
」;
エコー $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 “Fail
”;
}
}
}
}
?>


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



代 4

复制代 代码如下:


中国語の透かしを追加します
/*---------------------------- --------------------------------
**説明: これは、指定されたファイルに下部のウォーターマークを追加するために使用されます。画像 (画像表示領域を占有しないカスタム クラス)、オブジェクトを作成してそれを呼び出す必要があります。 ライブラリ サポート、iconv サポートが必要です (php5 は既に含まれており、ロードする必要はありません)
2. jpg/jpeg/gif/png の 3 つのタイプの画像に適しています。他のタイプは処理されません。
3. 画像が配置されているディレクトリの属性は書き込み可能である必要があることに注意してください。
4. 呼び出し例:
>$objImg = new MyWaterDown Chinese();
$objImg->Path = "images/";
$objImg->FileName = "1.jpg "; "HAHAKONGJIAN[url]HTTP://HI.BAIDU.COM/LYSONCN[/url]";
$objImg->Font = "./font/simhei .ttf"; Run();
**メンバー関数:
----------------------- ------------ ----------------------------*/
class MyWaterDown Chinese{
var $Path = "./";このクラスを呼び出すページからの、画像が配置されているディレクトリの相対パス
var $FileName = "" //画像の名前 (例: "1.jpg"
var $Text) = ""; //画像に追加される透かしテキストは中国語をサポートします
var $TextColor = "#ffffff" //テキストの色、GIF画像の場合、フォントの色は黒のみです
var $TextBgColor = "#000000" //テキスト背景バーの色
var $Font = "c://windows//fonts//simhei.ttf"; //フォント格納ディレクトリ、相対パス
var $OverFlag = true; //元の画像を上書きするかどうか、デフォルトは上書きします。 上書きしない場合は、"1.jpg" => のように元の画像ファイル名の後に "_water_down" が自動的に追加されます。 ; "1_water_down.jpg"
var $BaseWidth = 200; //透かしテキストを追加する前に、画像の幅は少なくとも 200 でなければなりません。
//------------------------------------------ ----------
//関数: クラスコンストラクター (php5.0 以降)
//パラメータ: なし
//戻り値: なし
function __construct(){;}
//-------------------------------- -------------------------
//関数: クラスのデストラクタ ( php5. 0 以降)
//パラメータ: なし
//戻り値: なし
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->FileName);
//
$inImg = $this->Path.$this->FileName; ;
$tmpImg = $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[0]; = $groundImageType[1];
$imgType = $groundImageType[2];
if($imgWidth < $this->BaseWidth) // 基本幅より小さい場合は、処理済み
return;
//画像はjpg/jpegではありません/ gif/pngを使用する場合、
switch($imgType)
{
ケース1:
$image = imagecreatefromgif($inImg);
$this->TextBgColor = "#ffffff "; //GIF 画像のフォントは黒のみなので、背景色は白に設定されます。ケース 2:
$image = imagecreatefromjpeg($inImg);
ケース 3:
$image = imagecreatefrompng($inImg);
デフォルト:
return;
break;
}
// カラーを作成します
$ color = @imagecolorallocate($image,hexdec(substr($this->TextColor,1,2)),hexdec( substr($this->TextColor,3,2)),hexdec(substr($this-> ;TextColor,5,2))); //テキストの色
//空の画像を生成します。その高さは下部の透かしの高さだけ増加します
$newHeight = $imgHeight 20;
$objTmpImg = @ imagecreatetruecolor($imgWidth,$newHeight);
$colorallocate($objTmpImg,hexdec(substr() $this->TextBgColor,1,2)),hexdec(substr($this->TextBgColor,3 ,2)),hexdec(substr($this->TextBgColor,5,2)); //背景色
//画像の背景色を塗りつぶします
@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)
{
ケース 1:
imagegif($objTmpImg,$tmpImg);
ケース 2:
imagejpeg($objTmpImg,$tmpImg); 🎜>ケース 3:
imagepng($objTmpImg,$tmpImg);
break;
default :
break;
}
// リソースを解放します。 >@imagedestroy($objTmpImg);
@imagedestroy($image);
//ファイルの名前を変更します
if($this->OverFlag)
{
//元のファイルを上書きしますimage
@unlink($inImg);
@rename($tmpImg,$outImg);
}
else
{
//元の画像を上書きしません
@rename($tmpImg,$outImg);
}
}
//------ --------------------- -----------
//関数: ウォーターマーク テキスト オブジェクトを作成します。
//パラメータ: なし
//戻り値: 作成されたウォーターマーク テキスト オブジェクト
function createText($instring )
{
$outstring="";
$max=strlen($instring);
for($i=0;$i<$max;$i )
{
$h=ord($instring[$i]);
if($h>=160 && $i{
$outstring .= ""。 Base_convert(bin2hex(iconv("gb2312","ucs-2",substr($instring,$i,2))), 16,10).";"; >else
{
$outstring .= $instring[$i];
}
}
return $outstring;
}//class
? >



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート