ホームページ > バックエンド開発 > PHPチュートリアル > PHP 画像と中国語の透かし実装コード_PHP チュートリアル

PHP 画像と中国語の透かし実装コード_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:46:19
オリジナル
946 人が閲覧しました

PHPで中国語のウォーターマークを追加するには、いくつかの簡単な処理を行う必要があります。1つは文字をgbkに変換すること、もう1つは中国語のフォントをロードすることです。これらの2つの条件があれば、画像に中国語のウォーターマークを追加するのは簡単です。

例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 (Kaili)、SIMFANG.TTF (Imitation Songdynasty)、SIMSUN.TTC (Song Empire & New) になります。宋代) など 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("コンテンツタイプ: 画像/GIF"); $im = @imagecreatefromstring(file_get_contents($img)) または 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 はグリフのサイズです。 // 角度は時計回りに計算されたフォントの角度です。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==""):
ImageGif($im); //画像は保存せず、表示するだけです
その他:
ImageGif($im,$new_img); // 画像を保存しますが、表示しません
終わり;

ImageDestroy($im); //グラフィックスを終了し、メモリ空間を解放します
}
?>

例 3

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

/*
* 機能: PHP 画像透かし (透かしは画像またはテキストをサポートします)
* パラメータ:
* $groundImage 背景画像、つまり透かしを入れる必要がある画像は、現在 GIF、JPG、および PNG 形式のみをサポートしています。 * $waterPos ウォーターマークの位置、10 個の状態があり、0 はランダムな位置です
* 1 は上部が左側にあることを意味し、2 は上部が中央にあることを意味し、3 は上部が右​​側にあることを意味します
* 4 は中心が左側にあることを意味し、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 読み取り、GIF 作成、JPG、PNG をサポート
* $waterImage と $waterText を同時に使用しないことをお勧めします。最初に $waterImage を選択してください。
※ $waterImage が有効な場合、パラメータ $waterString、$stringFont、$stringColor は無効になります。
※ウォーターマーク入り画像のファイル名は$groundImageと同じです。
* 作成者: ロングウェア @ 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])//ウォーターマーク画像の形式を取得します

{
ケース 1:$water_im = imagecreatefromgif($waterImage);休憩
ケース 2:$water_im = imagecreatefromjpeg($waterImage);break; ケース 3:$water_im = imagecreatefrompng($waterImage);break; デフォルト: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);休憩
ケース 2:$ground_im = imagecreatefromjpeg($groundImage);break; ケース 3:$ground_im = imagecreatefrompng($groundImage);break; デフォルト:die($formatMsg); }
}

それ以外は

{
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]; 設定を解除($temp)
$label = "テキストエリア"; }
if( ($ground_w<$w) || ($ground_h<$h) )
{
echo "ウォーターマークを入れる必要がある画像の長さまたは幅がウォーターマーク「.$label.」より小さいため、ウォーターマークを生成できません!"; 戻る
}
スイッチ($waterPos)
{
ケース 0://ランダム
$posX = rand(0,($ground_w - $w)); $posY = rand(0,($ground_h - $h)); 休憩
case 1://1 は、上が左側にあることを意味します
$posX = 0; $posY = 0; 休憩
case 2://2 は上部と中央です
$posX = ($ground_w - $w) / 2; $posY = 0; 休憩
case 3://3 は右上を意味します
$posX = $ground_w - $w; $posY = 0; 休憩
case 4://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; $posY = ($ground_h - $h) / 2; 休憩
case 7://7 は、下が左側にあることを意味します
$posX = 0; $posY = $ground_h - $h; 休憩
case 8://8 は中央下です
$posX = ($ground_w - $w) / 2; $posY = $ground_h - $h; 休憩
case 9://9 は、下が右側であることを意味します
$posX = $ground_w - $w; $posY = $ground_h - $h; 休憩
デフォルト://ランダム
$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)); $G = hexdec(substr($textColor,3,2)); $B = hexdec(substr($textColor,5)); }
それ以外は
{
die("透かしのテキストの色の形式が正しくありません!"); }
画像文字列 ($ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B)); }

//ウォーターマーク生成後の画像
@unlink($groundImage); switch($ground_info[2])//背景画像の形式を取得します
{
ケース 1:imagegif($ground_im,$groundImage);ブレーク
ケース 2:imagejpeg($ground_im,$groundImage);ブレーク
ケース 3:imagepng($ground_im,$groundImage);ブレーク
デフォルト:die($errorMsg); }

//メモリを解放する
if(isset($water_info)) unset($water_info)

if(isset($water_im)) imagedestroy($water_im); 設定を解除($ground_info)

画像破壊($ground_im)
}

//——————————————————————————————

$id=$_REQUEST['id']
$num = count($_FILES['ユーザーファイル']['名前']); print_r($_FILES['ユーザーファイル']); print_r($_FILES['ユーザーファイル']['名前']);

$num をエコーし​​ます。 エコー「
」; if(isset($id)){
for($i=0;$i
if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size']>0)
{
$uploadfile = “./”.time().”_”.$_FILES['ユーザーファイル'][名前][$i]; エコー「
」; $uploadfile をエコーし​​ます。 if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))
{
エコー「OK
」;

//テキストの透かし
//imageWaterMark($uploadfile,5,"","HTTP://www.lvye.info",5,"#cccccc");

//画像の透かし
$waterImage=”logo_ok1.gif”;//透かし画像のパス
imageWaterMark($uploadfile,9,$waterImage);

echo “”;
}
それ以外は
{
「失敗しました
」をエコーし​​ます。 }
}
}
}

?>
<フォームenctype=”multipart/form-data”メソッド=”POST”> for($a=0;$a<$id;$a++){
echo “ファイル:
”;

}
?>
<入力タイプ=”送信” 値=”アップロード”>

http://www.bkjia.com/PHPjc/632964.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632964.html技術記事 PHPで中国語のウォーターマークを追加するには、いくつかの簡単な処理を行う必要があります。1つは文字をgbkに変換すること、もう1つは中国語のフォントを読み込むことです。これらの2つの条件で画像に中国語のウォーターマークを追加できます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート