//**************************************** //
// 機能: 写真にテキストを追加します
// パラメータ: $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.comtruehttp://www.bkjia.com/PHPjc/632964.html技術記事 PHPで中国語のウォーターマークを追加するには、いくつかの簡単な処理を行う必要があります。1つは文字をgbkに変換すること、もう1つは中国語のフォントを読み込むことです。これらの2つの条件で画像に中国語のウォーターマークを追加できます。
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |