ホームページ バックエンド開発 PHPチュートリアル PHP imagecopy() と imagecopymerge() を使用して画像にウォーターマークを追加する_PHP チュートリアル

PHP imagecopy() と imagecopymerge() を使用して画像にウォーターマークを追加する_PHP チュートリアル

Jul 13, 2016 am 10:46 AM
imagecopy php そして 画像 存在する 透かし に追加

PHP で画像にウォーターマークを追加する方法は数多くありますが、これらの関数はすべて PHP の GD ライブラリに基づいています。GD ライブラリのアカウントを持っていない場合は、ウォーターマーク機能を使用できません。

imagecopymerge() 関数は、画像の一部をコピーして結合するために使用され、成功した場合は TRUE を返し、それ以外の場合は FALSE を返します。

Windows で PHP GD ライブラリのサポートを有効にする

php.ini を見つけてコンテンツを開いて、次の内容を見つけます:

;拡張子=php_gd2.dll

先頭のセミコロン「;」を削除して保存します。最初からセミコロンがない場合は、すでに有効になっていることを意味します

基本文法

bool imagecopymerge( resource dst_im, resource src_im, int dst_x,
int dst_y、int src_x、int src_y、int src_w、int src_h、int pct )

パラメータの説明: パラメータの説明

dst_im対象画像
src_im がソース画像をコピーしました
dst_x ターゲット画像の開始 x 座標
dst_y は、ターゲット画像の開始 y 座標です。x と y が両方とも 0 の場合、左上隅から開始します
src_x 画像の開始 X 座標をコピー
src_y は、画像の y 座標のコピーを開始します。x と y が両方とも 0 の場合、コピーは左上隅から開始されます
src_w (src_xから始まる) コピーの幅
src_h (src_yから始まる) コピーの高さ
pct 画像のマージ度、値 0 ~ 100。pct=0 の場合、実際には何も行われません。それ以外の場合は完全にマージされます。

pct = 100の場合、この関数はパレット画像のimagecopy()とまったく同じです

使い方がわかれば、次のコードで簡単に関数を実装できます

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

header("コンテンツタイプ: image/jpeg");

//元画像
$dst = "images/flower_1.jpg";

//元画像情報を取得
$dst_im = imagecreatefromjpeg($dst);
$dst_info = getimagesize($dst);

//透かし画像
$src = "images/logo.gif";
$src_im = imagecreatefromgif($src);
$src_info = getimagesize($src);

//透かしの透明度
$アルファ = 30;

//透かし画像を結合
imagecopymerge($dst_im,$src_im,$dst_info[0]-$src_info[0],$dst_info[1]-$src_info[1],0,0,$src_info[0],
$src_info[1],$alpha);

//結合された透かし画像を出力します
imagejpeg($dst_im);
imagedestroy($dst_im);
imagedestroy($src_im);
?>

新しいバージョン以降、imagecopymerge 関数はほとんど使用されなくなり、imagecopy を直接使用してウォーターマークを生成できるようになりました。この 2 つの関数の機能はまったく同じです。

//增加水印
$watermark =1;
$watertype =2;
$waterstring =''; 
$waterimg="z.png";    //水印图片
$sFilePath ='aa.jpg';
if($watermark==1)
{
 $image_size = getimagesize($sFilePath); // 上の写真
 $water_size = getimagesize($waterimg);  //水印写真
 $iinfo=getimagesize($sFilePath,$iinfo);
 $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
 $white=imagecolorallocate($nimage,255,255,255);
 $black=imagecolorallocate($nimage,0,0,0);
 $red=imagecolorallocate($nimage,255,0,0);
 imagefill($nimage,0,0,$white);
 スイッチ ($iinfo[2])
 {
  ケース 1:
   $simage =imagecreatefromgif($sFilePath);
   壊す;
  ケース 2:
   $simage =imagecreatefromjpeg($sFilePath);
   壊す;
  ケース 3:
   $simage =imagecreatefrompng($sFilePath);
   壊す;
// ケース 6:
// $simage =imagecreatefromwbmp($sFilePath);
// 壊す;
  デフォルト:
   die("サポートされていない文書の種類");
   出口;
 }
 
 imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
 
 スイッチ($watertype)
 {
  case 1: //加水注目符串
   imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
   壊す;
  case 2: //加水印图片
   $simage1 =imagecreatefrompng($waterimg);     
   $x= $image_size[0]-$water_size[0];
   $y= $image_size[1]-$water_size[1];
   imagecopy($nimage,$simage1,$x,$y,0,0,240,65);
   imagedestroy($simage1);
   壊す;
 }
    
 スイッチ ($iinfo[2])
 {
  ケース 1:
   imagegif($nimage, $sFilePath);
// imagejpeg($nimage, $sFilePath);
   壊す;
  ケース 2:
   imagejpeg($nimage, $sFilePath);
   壊す;
  ケース 3:
   imagepng($nimage, $sFilePath);
   壊す;
// ケース 6:
// imagewbmp($nimage, $sFilePath);
// //imagejpeg($nimage, $sFilePath);
// 壊す;
 }
 
 //上盖原上传文件
 imagedestroy($nimage);
 imagedestroy($simage);
}

サムネイルを生成し、写真に透かしを追加できる優れた機能


/***
写真を加工したい
まず、画像のサイズとタイプの情報を取得する必要があります

ウォーターマーク: 指定したウォーターマークをターゲットにコピーし、透明効果を追加します

サムネイル: 大きな画像を小さなサイズの画面にコピーすることです
***/

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

クラス ImageTool {
// imageInfo は画像情報を分析します
// array() を返す
パブリック静的関数 imageInfo($image) {
// 画像が存在するかどうかを判断します
If (!file_exists($image)) {
false を返す;                                                                         
$info = getimagesize($image);
If ($info == false) {
false を返す;                                                                         
// このとき、情報は解析され配列になります
$img['width'] = $info[0]; $img['高さ'] = $info[1]; $img['ext'] = substr($info['mime'], strpos($info['mime'], '/') + 1);
$img を返す; }

/*
ウォーターマーク機能
Parm String $dst とその他の操作の写真
Parm String $water 透かし画像
Parm String $save、入力しない場合、デフォルトで元の画像が置き換えられます
*/
パブリック静的関数 Water($dst, $water, $save = NULL, $pos = 2, $alpha = 50) {
// 最初に 2 つの写真が存在することを確認してください
If (!file_exists($dst) || !file_exists($water)) {
false を返す;                                                                         
// まず、ウォーターマークが操作対象の画像より大きくならないことを確認してください
$dinfo = self::imageInfo($dst); $wininfo = self::imageInfo($water);
If ($winfo['height'] > $dinfo['height'] || $winfo['width'] > $dinfo['width']) {
false を返す;                                                                         
// 2 つの写真をキャンバス上で読み取ります。しかし、写真は png または jpeg である可能性があります。読み取るにはどの関数を使用する必要がありますか? $dfunc = 'imagecreatefrom'
$wfunc = 'imagecreatefrom'

If (!function_exists($dfunc) || !function_exists($wfunc)) {
false を返す;                                                                         
// 関数を動的にロードしてキャンバスを作成します
$dim = $dfunc($dst); // 操作対象のキャンバスを作成します
$wim = $wfunc($water); // 透かしキャンバスを作成します

// ウォーターマークの位置に基づいて貼り付けた座標を計算します
スイッチ($pos) {
ケース 0 :
// 左上隅
$posx = 0; $posy = 0;                壊す; 
 
            ケース 1 :
                // 右上角
                $posx = $dinfo['width'] - $winfo['width']; 
                $posy = 0; 
                壊す; 
 
            ケース 3 :
                // 左下角
                $posx = 0; 
                $posy = $dinfo['身長'] - $winfo['身長']; 
                壊す; 
 
            デフォルト:
                $posx = $dinfo['width'] - $winfo['width']; 
                $posy = $dinfo['身長'] - $winfo['身長']; 
        }
 
        // 加水印
        imagecopymerge($dim, $wim, $posx, $posy, 0, 0, $winfo['width'], $winfo['height'], $alpha); 
 
        // 保存
        if (!$save) {
            $save = $dst; 
            リンク解除($dst); 
            // 删除原图
        }
 
        $createfunc = 'イメージ' 。 $dinfo['ext']; 
        $createfunc($dim, $save); 
 
        imagedestroy($dim); 
        imagedestroy($wim); 
 
        true を返します。 
    }
 
    /**
親指 サムネイルを生成
比例して拡大縮小し、両側を空白のままにしておきます
**/
    パブリック静的関数thumb($dst, $save = NULL, $width = 200, $height = 200) {
        // 最初に処理待ちの画像が存在しません
        $dinfo = self::imageInfo($dst); 
        if ($dinfo == false) {
            false を返します。 
        }
 
        // 计算缩放比
        $calc = min($width / $dinfo['width'], $height / $dinfo['height']); 
 
        // 创建原始图的画布
        $dfunc = 'imagecreatefrom' 。 $dinfo['ext']; 
        $dim = $dfunc($dst); 
 
        // 创建缩略画布
        $tim = imagecreatetruecolor($width, $height); 
 
        // 创建白色充填缩略画布
        $white = imagecolorallocate($tim, 255, 255, 255); 
 
        // 充填缩略画布
        imagefill($tim, 0, 0, $white); 
 
        // 复制并缩略
        $dwidth = (int)$dinfo['width'] * $calc; 
        $dheight = (int)$dinfo['height'] * $calc; 
 
        $paddingx = (int)($width - $dwidth) / 2; 
        $paddingy = (int)($height - $dheight) / 2; 
 
        imagecopyresampled($tim, $dim, $paddingx, $paddingy, 0, 0, $dwidth, $dheight, $dinfo['width'],

$dinfo['身長']); 
 
        // 写真を保存
        if (!$save) {
            $save = $dst; 
            リンク解除($dst); 
        }
 
        $createfunc = 'イメージ' 。 $dinfo['ext']; 
        $createfunc($tim, $save); 
 
        imagedestroy($dim); 
        imagedestroy($tim); 
 
        true を返します。 
 
    }
 
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632955.html技術記事画像 ウォータープリントの追加 php ではさまざまな方法が実行できますが、これらの機能はすべて php の GD に基づいており、ウォータープリント機能がない場合は使用できません。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles