ホームページ バックエンド開発 PHPチュートリアル 画像にウォーターマークを追加するための超強力なクラス_PHP チュートリアル

画像にウォーターマークを追加するための超強力なクラス_PHP チュートリアル

Jul 13, 2016 pm 05:47 PM
個人の 追加 写真 対処する 成し遂げる 強力な 透かし 親切

午後は何もすることがなかったので、画像に透かしを追加するためのクラスを書きました。このクラスは、画像へのテキスト透かしの追加、画像透かしの追加を実装し、すべてのネチズンが学習してコミュニケーションできるようにする透明機能も実装します。

/**

* 透かしカテゴリを追加し、テキスト、画像の透かしと透明度の設定を追加し、透かし画像の背景が透明になります。

* @author litx 日付:2011 年 12 月 5 日午後 3 時、マイクロン クイックキャスト R&D センターにて

​*/

ウォーターマスククラス

{

/**

* 透かしタイプ

* @var int $waterType 0 はテキストの透かし、1 は画像の透かしです

​​*/

プライベート $waterType = 1;

/**

* 透かし位置の種類

* @var int $pos デフォルトは 9 (右下隅) です

​​*/

プライベート $pos = 9;

/**

*透かしの透明度

* @var int $transparent ウォーターマークの透明度 (値が小さいほど透明度が高くなります)

​​*/

プライベート $transparent = 20;

/**

* テキスト透かしの場合は、透かしテキストを追加する必要があります

* @var string $waterStr デフォルト値 (Li Tiexiong の個人コレクション)

​​*/

private $waterStr = '個人のポートフォリオ';

/**

* テキストのフォントサイズ

* @var int $fontSize フォントサイズ

​​*/

プライベート $fontSize = 14;

/**

* 透かしの文字色 (RGB)

* @var 配列 $fontColor 透かしのテキストの色 (RGB)

​​*/

プライベート $fontColor = 配列 (255, 255, 255);

/**

* フォントファイル

* @var 不明なタイプ

​​*/

プライベート $fontFile = 'AHGBold.ttf';

/**

*透かし画像

* @var 文字列 $waterImg

​​*/

プライベート $waterImg = 'ロゴ.png';

/**

* 透かしを入れる必要がある画像

* @var 文字列 $srcImg

​​*/

プライベート $srcImg = '';

/**

*画像ハンドル

* @var 文字列 $im

​​*/

プライベート $im = '';

/**

* 透かし画像ハンドル

* @var 文字列 $water_im

​​*/

プライベート $water_im = '';

/**

※画像情報

* @var 配列 $srcImg_info

​​*/

プライベート $srcImg_info = '';

/**

*透かし画像情報

* @var 配列 $waterImg_info

​​*/

プライベート $waterImg_info = '';

/**

* 透かしの文字幅

* @var int $str_w

​​*/

プライベート $str_w = '';

/**

* 透かしのテキストの高さ

* @var int $str_h

​​*/

プライベート $str_h = '';

/**

*透かしXコーディネート

* * @var int $x

​​*/

プライベート $x = '';

/**

*透かしy座標

* @var int $y

​​*/

プライベート $y = '';

/**

* コンストラクター、透かしを入れる必要があるソース画像を渡してソース画像を初期化します

* @param string $img 透かしを入れる必要があるソース画像

​​*/

パブリック関数 __construct ($img)

{

If(file_exists($img)){//ソースファイルが存在します

$this -> srcImg = $img;

}else{//ソース ファイルが存在しません

echo 'ソースファイル'.$img.' が存在しません。ファイルパスが正しいかどうかを確認してください

;

終了();

}

}

/**

* 透かしを入れる必要がある画像の情報を取得し、画像をロードします

​​*/

パブリック関数 imginfo ()

                                                    

$this -> srcImg_info = getimagesize($this -> srcImg); var_dump($this -> srcImg_info);exit();

スイッチ ($this -> srcImg_info[2]) {

ケース 3 ://png

$ this - >

休憩 1;

ケース 2: // jpeg/jpg

                                                                                                                                                                     

休憩 1;

ケース 1: //gif

$ this->

休憩 1;

デフォルト:

Echo 'ソース画像ファイル'. $ This -& gt; '現在、この機能は PNG、JPEG、GIF 画像の透かし機能のみをサポートしています。

終了();

}

}

/**

* ウォーターマーク画像の情報を取得して画像を読み込みます

​​*/

プライベート関数 Waterimginfo ()

{

$this ->waterImg_info = getimagesize($this ->waterImg);

switch ($this ->waterImg_info[2]) {

ケース 3:

​​ ​ ​ ​ ​ ​​

休憩 1;

ケース 2:

​​ ​ ​ ​ ​ ​ ​​

休憩 1;

ケース 1 :

​​ ​ ​ ​ ​ ​​

休憩 1;

デフォルト:

Echo 'ソース画像ファイル' $ This -& gt; '現時点では、この機能は PNG、JPEG、GIF 画像の透かし機能のみをサポートしています。

終了();

}

}

/**

* 透かし位置アルゴリズム

​​*/

プライベート関数ウォーターポス ()

{

switch ($this -> pos) {

case 0: //ランダムな位置

$this -> x = rand(0, $this ->gt; srcImg_info[0] - $this ->waterImg_info[0]);

$this -> y = rand(0, $this ->gt; srcImg_info[1] - $this ->waterImg_info[1]);

休憩 1;

ケース 1: //左上

$this -> x = 20;

$this -> y = 20;

休憩 1;

ケース 2: //上中央

$this -> x = ($this ->gt; srcImg_info[0] - $this ->waterImg_info[0]) / 2;

$this -> y = 20;

休憩 1;

ケース 3: //右上

​​​​​​​​​​​​​

$this -> y = 20;

休憩 1;

ケース 4: //中央左

$this -> x = 20;

$this -> y = ($this ->gt; srcImg_info[1] - $this ->waterImg_info[1]) / 2;

休憩 1;

case 5: //中中

$this -> x = ($this ->gt; srcImg_info[0] - $this ->waterImg_info[0]) / 2;

                $this -> y = ($this ->srcImg_info[1] - $this ->waterImg_info[1]) / 2; 

                休憩1; 

            ケース 6 : //中右

                $this -> x = $this -> srcImg_info[0] - $this ->水Img_info[0] - 20; 

                $this -> y = ($this ->srcImg_info[1] - $this ->waterImg_info[1]) / 2; 

                休憩1; 

            ケース 7 : //下左

                $this -> x = 20; 

                $this -> y = $this -> srcImg_info[1] - $this ->水Img_info[1] - 20; 

                休憩1; 

            ケース 8 : //下中 www.2cto.com

                $this -> x = ($this ->srcImg_info[0] - $this ->waterImg_info[0]) / 2; 

                $this -> y = $this -> srcImg_info[1] - $this ->水Img_info[1] - 20; 

                休憩1; 

            ケース 9 : //下右

                $this -> x = $this -> srcImg_info[0] - $this ->水Img_info[0] - 20; 

                $this -> y = $this -> srcImg_info[1] - $this ->水Img_info[1] - 20; 

                休憩1; 

            デフォルト : //下右

                $this -> x = $this -> srcImg_info[0] - $this ->水Img_info[0] - 20; 

                $this -> y = $this -> srcImg_info[1] - $this ->水Img_info[1] - 20; 

                休憩1; 

        }

    }

    /**

* 画像の透かしを追加します

​​*/

    プライベート関数 Waterimg ()

    {

        if ($this -> srcImg_info[0] <= $this ->waterImg_info[0] || $this -> srcImg_info[1] <= $this ->waterImg_info[1]) {

            echo '图片尺寸太小、無法加水印、请上传一张大图片'; 

            出口(); 

        }

        //计算水印の位置

        $this->waterpos(); 

        $cut = imagecreatetruecolor($this ->waterImg_info[0], $this ->waterImg_info[1]); 

        imagecopy($cut, $this ->im, 0, 0, $this ->x, $this ->y, $this ->waterImg_info[0],

        $this -> WaterImg_info[1]); 

        $pct = $this ->透明; 

        imagecopy($cut, $this ->water_im, 0, 0, 0, 0, $this ->waterImg_info[0],

        $this -> WaterImg_info[1]); 

        // 画像と水印の画像を合成します

        imagecopymerge($this ->im, $cut, $this ->x, $this ->y, 0, 0, $this ->waterImg_info[0], $this ->waterImg_info[1], $pct); 

    }

    /**

* テキストの透かしを追加します

​​*/

    プライベート関数 Waterstr ()

    {

        $rect = imagettfbbox($this ->fontSize, 0, $this ->fontFile, $this ->waterStr); 

        $w = abs($rect[2] - $rect[6]); 

        $h = abs($rect[3] - $rect[7]); 

        $fontHeight = $this ->フォントサイズ; 

        $this -> Water_im = imagecreatetruecolor($w, $h); 

        imagealphablending($this ->water_im, false); 

        Imagesavealpha($this ->water_im, true); 

        $white_alpha = imagecolorallocatealpha($this ->water_im, 255, 255, 255, 127); 

        imagefill($this ->water_im, 0, 0, $white_alpha); 

        $color = imagecolorallocate($this ->water_im, $this ->gt; fontColor[0], $this ->gt; fontColor[1],

        $this -> fontColor[2]); 

        imagettftext($this ->water_im, $this ->fontSize, 0, 0, $this ->fontSize, $color,

        $this -> fontFile、$this ->水Str); 

        $this -> WaterImg_info = 配列 (

            0 => $w, 1 => $h

        ); 

        $this->waterimg(); 

    }

    /**

* 透かし画像出力

​​*/

    パブリック関数の出力 ()

    {

        $this->imginfo(); 

        if ($this ->waterType == 0) {

            $this->waterstr(); 

        } その他 {

            $this->waterimginfo(); 

            $this->waterimg(); 

        }

        スイッチ ($this -> srcImg_info[2]) {

            ケース 3 :

                imagepng($this ->im, $this ->srcImg); 

                休憩1; 

            ケース 2 :

                imagejpeg($this ->im, $this ->srcImg); 

                休憩1; 

            ケース 1 :

                imagegif($this ->im, $this ->srcImg); 

                休憩1; 

            デフォルト:

die('ウォーターマークの追加に失敗しました!');

壊す;

}

//画像合成後の破棄処理

imagedestroy($this ->

);

imagedestroy($this ->water_im);

}

}

使用例:

// オブジェクトをインスタンス化します

$obj = 新しいウォーターマスク('img/10451.jpg');

//タイプ: 0 はテキストの透かし、1 は画像の透かしです

$obj->waterType = 0;

//透かしの透明度、値が小さいほど透明度が高くなります

$obj->透明 = 15;

//透かしテキスト

//$obj->waterStr = 'お誕生日おめでとう';

//透かし画像

//$obj->waterImg = '';//透かし画像

//テキストのフォントサイズ

$obj->fontSize = 14;

//透かしのテキストの色 (RGB)

$obj->fontColor = array(255,255,100);

//フォントファイル

$obj->fontFile = 'STCAIYUN.ttf';

//出力ウォーターマーク画像ファイルは入力画像ファイルを上書きします

$obj->output();

使用方法は比較的簡単で非常に実用的です。

著者 ltx851201

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

www.bkjia.com

tru​​e

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

技術記事

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Meitu Xiuxiuに透かしを追加するにはどうすればよいですか?美しい写真にウォーターマークを追加する方法を共有してください。 Meitu Xiuxiuに透かしを追加するにはどうすればよいですか?美しい写真にウォーターマークを追加する方法を共有してください。 Mar 16, 2024 pm 09:55 PM

MeituXiuXiu に透かしを追加する方法を知りたいですか? Meitu Xiuxiuは、写真を切り取って別の写真に重ねたり、写真サイズをkb単位で変更したり、透かしを削除したり、証明写真の背景色を変更したり、時間を追加したりする機能を備えた、非常に使いやすい写真編集ソフトです。 、日付と場所のウォーターマークを全画面に表示し、ユーザーが写真の作成を迅速に完了できるようにします。ユーザーの中には、自分で作成した写真を他の人に盗まれたくない、自分の透かしを入れたいが、その方法がわからない、という人もいます。編集者が美しい写真にウォーターマークを追加する方法を紹介します。気に入ったら、ぜひダウンロードしてください! 1. 美しい写真にウォーターマークを追加するにはどうすればよいですか?美しい写真にウォーターマークを追加する方法を共有してください。 1. このサイトからダウンロードした Meitu Xiu Xiu の 2023 バージョンを開きます。 Meitu Xiu Xiu 2023 バージョン カテゴリ: 撮影と美化 ダウンロード Meitu Xiu Xiu 2023 バージョンは、機能が豊富な画像美化および編集ソフトウェアです

小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか?投稿時に自動保存された画像はどこにありますか? 小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか?投稿時に自動保存された画像はどこにありますか? Mar 22, 2024 am 08:06 AM

ソーシャルメディアの継続的な発展に伴い、Xiaohongshu はますます多くの若者が自分たちの生活を共有し、美しいものを発見するためのプラットフォームとなっています。多くのユーザーは、画像を投稿する際の自動保存の問題に悩まされています。では、この問題をどうやって解決すればよいでしょうか? 1.小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか? 1. キャッシュをクリアする まず、Xiaohongshu のキャッシュ データをクリアしてみます。手順は次のとおりです: (1) 小紅書を開いて右下隅の「マイ」ボタンをクリックします。 (2) 個人センター ページで「設定」を見つけてクリックします。 (3) 下にスクロールして「」を見つけます。 「キャッシュをクリア」オプションを選択し、「OK」をクリックします。キャッシュをクリアした後、Xiaohongshu を再起動し、写真を投稿して、自動保存の問題が解決されるかどうかを確認します。 2. 小紅書バージョンを更新して、小紅書が正しく動作することを確認します。

TikTokのコメントに写真を投稿するにはどうすればよいですか?コメント欄の写真への入り口はどこですか? TikTokのコメントに写真を投稿するにはどうすればよいですか?コメント欄の写真への入り口はどこですか? Mar 21, 2024 pm 09:12 PM

Douyin のショートビデオの人気により、コメント エリアでのユーザーのやり取りがより多彩になりました。ユーザーの中には、自分の意見や感情をよりよく表現するために、コメントで画像を共有したいと考えている人もいます。では、TikTokのコメントに写真を投稿するにはどうすればよいでしょうか?この記事では、この質問に詳しく答え、関連するヒントと注意事項をいくつか紹介します。 1.Douyinのコメントに写真を投稿するにはどうすればよいですか? 1. Douyinを開く: まず、Douyin APPを開いてアカウントにログインする必要があります。 2. コメントエリアを見つける:短いビデオを閲覧または投稿するときに、コメントしたい場所を見つけて「コメント」ボタンをクリックします。 3. コメントの内容を入力します: コメント領域にコメントの内容を入力します。 4. 写真の送信を選択します。コメント内容を入力するインターフェースに「写真」ボタンまたは「+」ボタンが表示されます。

WIN10サービスホストの動作プロセスがCPUを過剰に占有している WIN10サービスホストの動作プロセスがCPUを過剰に占有している Mar 27, 2024 pm 02:41 PM

1. まず、タスクバーの空白スペースを右クリックして[タスクマネージャー]オプションを選択するか、スタートロゴを右クリックして[タスクマネージャー]オプションを選択します。 2. 開いたタスク マネージャー インターフェイスで、右端の [サービス] タブをクリックします。 3. 開いた[サービス]タブで、下の[サービスを開く]オプションをクリックします。 4. 表示される[サービス]ウィンドウで、[InternetConnectionSharing(ICS)]サービスを右クリックし、[プロパティ]オプションを選択します。 5. 表示されたプロパティ画面で[プログラムから開く]を[無効]に変更し、[適用]をクリックして[OK]をクリックします。 6. スタートロゴをクリックし、シャットダウンボタンをクリックして[再起動]を選択し、コンピュータの再起動を完了します。

Xiaomi Mi 14に写真の透かしを設定するにはどうすればよいですか? Xiaomi Mi 14に写真の透かしを設定するにはどうすればよいですか? Mar 18, 2024 am 11:00 AM

撮影した写真をよりパーソナライズしてユニークなものにするために、Xiaomi Mi 14 には写真の透かし設定が用意されています。写真の透かしを設定することで、ユーザーは撮影した写真にパターン、テキスト、ロゴを追加できるため、各写真に貴重な瞬間や思い出をより良く記録できます。次に、Xiaomi 14 で写真のウォーターマークを設定して、写真をよりパーソナライズして鮮やかにする方法を紹介します。 Xiaomi Mi 14に写真の透かしを設定するにはどうすればよいですか? 1. まず「カメラ」をクリックします。 2. 次に「設定」をクリックします。 3. 次に、ウォーターマークを見つけて、撮影を開始できます。

win11 24H2 の右下隅にある評価版のウォーターマークを削除する方法 win11 の右下隅にある評価版のウォーターマークを削除するためのヒント win11 24H2 の右下隅にある評価版のウォーターマークを削除する方法 win11 の右下隅にある評価版のウォーターマークを削除するためのヒント Jun 01, 2024 pm 09:52 PM

win1124H2 の右下隅にある評価コピーのテキストを削除するにはどうすればよいですか?システムを使用すると、デスクトップの画面の右下隅に透明な透かしが表示される場合がありますが、この透明な透かしを削除するにはどうすればよいでしょうか。ユーザーはサードパーティ製ソフトウェアを直接使用して操作できます。このサイトでは、win1124H2 評価版のウォーターマークを削除する方法をユーザーに丁寧に紹介します。 win1124H2評価版のウォーターマークを削除するには、UniversalWatermarkDisablerツールをダウンロードして実行すると、現在のシステムバージョンとウォーターマークのステータスが表示され、「ステータス」に「インストール準備完了」と表示されていれば削除できます。

PPT画像を1枚ずつ表示させる方法 PPT画像を1枚ずつ表示させる方法 Mar 25, 2024 pm 04:00 PM

PowerPoint では、画像を 1 枚ずつ表示するのが一般的な手法ですが、これはアニメーション効果を設定することで実現できます。このガイドでは、基本的なセットアップ、画像の挿入、アニメーションの追加、アニメーションの順序とタイミングの調整など、この手法を実装する手順について詳しく説明します。さらに、トリガーの使用、アニメーションの速度と順序の調整、アニメーション効果のプレビューなど、高度な設定と調整が提供されます。これらの手順とヒントに従うことで、ユーザーは PowerPoint で次々に表示される画像を簡単に設定できるため、プレゼンテーションの視覚的な効果が高まり、聴衆の注意を引くことができます。

WPSでウォーターマークを編集する方法の紹介 WPSでウォーターマークを編集する方法の紹介 Mar 27, 2024 pm 02:06 PM

1. WPS を使用してドキュメントを開きます。ウォーターマークが入っています。汚く見えます。削除するにはどうすればよいですか?下を見てください。 2. メニュー バーで [挿入] タブを見つけ、このタブの下にあるヘッダー アイコンとフッター アイコンを選択し、マウスの左ボタンでクリックします。 3. このとき、ページ上の文字は灰色になり編集できませんが、文字裏のウォーターマークはこの時点で編集可能です。 4. 透かしをクリックすると、画像の周りにいくつかの小さな四角があるため、これが画像の透かしであることがわかります。この時点で画像を編集できます。 5. キーボードの削除キーを使用して画像を削除すると、透かしが消えていることがわかります。 6. ページ上でマウスをダブルクリックしてヘッダーとフッターの編集モードを終了すると、ページ上のテキストが通常の色に戻り、編集できるようになりますが、この時点ではページ上の透かしが消えています。 7。

See all articles