PHPグラフィックス画像操作

Aug 08, 2016 am 09:20 AM
imagepng logo

GDライブラリの紹介

GDは、グラフィックデバイスを指し、GDライブラリが提供する一連のAPIを通じて、画像を処理したり、新しい画像を直接生成したりするために使用される拡張ライブラリです。 。

テキスト処理に加えて、PHP は GD ライブラリを通じて JPG、PNG、GIF、SWF およびその他の画像を処理することもできます。 GD ライブラリは、画像の透かし入れや検証コードの生成などによく使用されます。

PHP にはデフォルトで GD ライブラリが統合されており、インストール時に有効にするだけで済みます。

<span>header("content-type: image/png"); $img=imagecreatetruecolor(100, 100); $red=imagecolorallocate($img, 0xFF, 0x00, 0x00); imagefill($img, 0, 0, $red); imagepng($img); imagedestroy($img);<span><span></span></span></span></preubuntu></divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p><span>線を描く</span></p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>グラフィックスを操作するには、まず新しいキャンバスを作成し、imagecreatetruecolor関数を使用してトゥルーカラーの空白の画像を作成します: </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100);</span><p><span>のGDライブラリ内ブラシで使用される色は、imagecolorallocate 関数を通じて割り当てる必要があります。ブラシの色は、パラメーターを介して RGB カラー値を設定することによって決定されます: </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><p><span> 次に、線分関数 imageline を呼び出して線を描画します。最後に始点と終点を指定して線分を取得します。 </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imageline($img, 0, 0, 100, 100, $red);</span><p><span>線を描いた後、headerとimagepngを通して画像を出力します。 </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>header("content-type: image/png"); imagepng($img);</span><p><span>最後に、imagedestroy を呼び出して、画像が占有しているメモリを解放できます。 </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagedestroy($img);</span><p><span> 上記の手順を通じて、PHP でグラフィックを描画するのは非常に簡単であることがわかりますが、多くの場合、画像を出力するだけでなく、画像ファイルを取得する必要がある場合もあります。 imagepng関数を使用して、描画した画像をファイルに保存します。 </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagepng($img, 'img.png');</span></preubuntu></preubuntu></preubuntu></preubuntu></preubuntu></preubuntu></divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p>画像内にテキストを描画</p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span> GD ライブラリでは、線の描画、背景の塗りつぶし、四角形の描画、テキストの描画など、さまざまな基本的なグラフィック操作を実行できます。 </span></p> <p><span>線を描くのと同様に、まず新しい画像を作成し、色を初期化する必要があります。 </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100); $red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><p><span>次に、imagestring 関数を使用してテキストを描画します。この関数には、imagestring ( resource $image 、 int $font 、 int $x 、 int $y 、 string $s 、 int $col ) という多くのパラメータがあります。渡される $font はフォント サイズを設定し、x と y はテキストの表示位置を設定します。$s は描画されるテキスト、$col はテキストの色です。 </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagestring($img, 5, 0, 0, "Hello world", $red); header("content-type: image/png"); imagepng($img); imagedestroy</span><span>($img); </span></preubuntu></preubuntu></divmicrosoft></p> <p><span>出力画像ファイル</span></p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span> imagepng がブラウザに画像を直接出力できることを以前に学びましたが、多くの場合、処理された画像をファイルに保存して、複数回使用されました。 path パラメーターを指定して、画像をファイルに保存します。 </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.png'; imagepng($img, $filename);</span><p><span>画像を png 形式で保存するには imagepng を使用し、画像を jpeg 形式で保存するには imagejpeg を使用し、画像を gif 形式で保存するには別の関数を使用する必要があります。 imagejpeg 画像は圧縮されているため、品質パラメータも設定できることに注意してください。 </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.jpg'; ?imagejpeg($img, $filename, 80);</span></preubuntu></preubuntu></divmicrosoft></p> <p>画像検証コードを生成する</p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span> 単純な検証コードは、実際に画像内のいくつかの文字を出力します。これは、前の章で説明した imagestring 関数を通じて実現できます。 </span></p> <p><span>しかし、処理の面では、検証コードをより安全にし、他のプログラムが自動的に認識するのを防ぐために、検証コードに何らかの干渉処理を実行する必要があることがよくありますが、通常、いくつかのノイズポイントが描画されます。干渉線分を描画し、文字を傾けたり、ねじったりするなどの操作を行って出力します。 </span></p> <p><span>imagesetpixel を使用して点を描画してノイズ干渉を実現することもできますが、1 つの点だけを描画しても効果はほとんどないため、ここではループを使用してランダムに描画することがよくあります。 </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>for($i=0;$i<50;$i++) { imagesetpixel($im, rand(0, 100) , rand(0, 100) , $black); imagesetpixel($im, rand(0, 100) , rand(0, 100) , $green); } </span><span></span></preubuntu></divmicrosoft></p> <br><p><br></p> <pre name="code"><?php $img = imagecreatetruecolor(100, 40); $black = imagecolorallocate($img, 0x00, 0x00, 0x00); $green = imagecolorallocate($img, 0x00, 0xFF, 0x00); $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF); imagefill($img,0,0,$white); //生成随机的验证码 $code = ''; for($i = 0; $i < 4; $i++) { $code .= rand(0, 9); } imagestring($img, 5, 10, 10, $code, $black); //加入噪点干扰 for($i=0;$i<50;$i++) { imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black); imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green); } //输出验证码 header("content-type: image/png"); imagepng($img); imagedestroy($img);
ログイン後にコピー

画像に透かしを追加する

画像に透かしを追加するには、一般に 2 つの方法があります。1 つは画像に文字列を追加する方法で、もう 1 つは画像に透かしを追加する方法です。画像 ロゴまたはその他の画像を追加します。

ここで処理しているのは既存の画像なので、既存の画像から直接キャンバスを作成したり、imagecreatefromjpegで画像ファイルから直接画像を作成したりすることができます。

<span>$im = imagecreatefromjpeg($filename);</span><p><span>创建图像对象以后,我们就可以通过前面的GD函数,绘制字符串到图像上。如果要加的水印是一个logo图片,那么就需要再建立一个图像对象,然后通过GD函数imagecopy将logo的图像复制到源图像中。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$logo = imagecreatefrompng($filename); imagecopy($im, $logo, 15, 15, 0, 0, $width, $height);</span><p><span>当将logo图片复制到原图片上以后,将加水印后的图片输出保存就完成了加水印处理。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagejpeg(</span><span>$im, $filename); </span></preubuntu></preubuntu></preubuntu></divmicrosoft></p> <br><p></p> <pre name="code"><?php //这里仅仅是为了案例需要准备一些素材图片 $url = 'http://www.iyi8.com/uploadfile/2014/0521/20140521105216901.jpg'; $content = file_get_contents($url); $filename = 'tmp.jpg'; file_put_contents($filename, $content); $url = 'http://wiki.ubuntu.org.cn/images/3/3b/Qref_Edubuntu_Logo.png'; file_put_contents('logo.png', file_get_contents($url)); //开始添加水印操作 $im = imagecreatefromjpeg($filename); $logo = imagecreatefrompng('logo.png'); $size = getimagesize('logo.png'); imagecopy($im, $logo, 15, 15, 0, 0, $size[0], $size[1]); header("content-type: image/jpeg"); imagejpeg($im);
ログイン後にコピー

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP图形图像操作,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

iwatch のロゴが点灯するだけで電源が入らない場合はどうすればよいですか? iwatch のロゴが点灯するだけで電源が入らない場合はどうすればよいですか? Mar 25, 2023 pm 02:00 PM

iwatch のロゴが点灯するだけで電源が入らない原因と解決策: 1. 電力不足が原因で電源が入らない。iwatch の背面を充電器に置くことができます。2. システムが原因です。バージョンの問題: システムを安定バージョンにロールバックできます; 3. 充電器または充電ケーブルの故障が原因の場合は、別の iwatch 磁気充電ケーブルと別の USB 電源アダプタを使用できます; 4. ハードウェアの故障が原因の場合は、次のことをお勧めします。メンテナンスのために専門のサードパーティ製試験機に行ってください。

福田汽車、Xiangling Qシリーズモデルの新ロゴと価格情報を公開 福田汽車、Xiangling Qシリーズモデルの新ロゴと価格情報を公開 Sep 12, 2023 pm 09:09 PM

8月29日、福田汽車は豪華なブランドリフレッシュカンファレンスを開催し、業界に一連のエキサイティングなニュースをもたらした。新しいロゴ、Auman Zhilanの底部バッテリー交換製品、新型Xiangling Q車が記者会見の焦点となったが、福田汽車の新しいロゴは同社の将来への野心を示している。福田汽車は、この新しいロゴはブランドの刷新と精力的な発展を象徴しており、同社が新たな発展段階に入ったことを示していると述べ、記者会見では、待望のAuman Smart Blue底部バッテリー交換製品も発売したと述べた。ユーザー より便利で効率的な使用体験がここにあります。同時に、新しく発売された香鈴 Q 自動車シリーズも大きな注目を集めており、合計 4 モデルがあり、価格は 167,800 元から 168,800 元まであり、消費者に

PHP チャート生成関数の詳細説明: gd ライブラリ、imagepng、imagestring およびその他の関数のチャート生成ガイド PHP チャート生成関数の詳細説明: gd ライブラリ、imagepng、imagestring およびその他の関数のチャート生成ガイド Nov 18, 2023 pm 04:56 PM

PHP チャート生成関数の詳細説明: gd ライブラリ、imagepng、imagestring およびその他の関数のチャート生成ガイド. チャート生成はデータの視覚化において重要な役割を果たし、データの変化の傾向と関係をより直感的に表現できます。人気のあるサーバー側スクリプト言語として、PHP は一連の強力なチャート生成関数を提供します。この記事では、gd ライブラリ、imagepng、imagestring などの関数の使用法を詳しく紹介し、読者がすぐに役立つように具体的なコード例を示します。

GoogleがAndroidロゴをアップデート!大文字、フォント、緑色のロボットがすべて変更されました。 GoogleがAndroidロゴをアップデート!大文字、フォント、緑色のロボットがすべて変更されました。 Sep 08, 2023 pm 01:13 PM

[Mobile China News] 来月 Android 14 の安定版をリリースする前に、Google はロゴと画像 (緑色のロボット) を含む Android ロゴを変更しました。新しい Android3D ロゴは、MaterialYou テーマに準拠しており、2019 年のロゴとはいくつかの点で異なります。ケース: テキストから、Android の最初の文字である文字 A が大文字になりました。以前はすべて小文字でした。フォントの太さ: Android のロゴのフォントは太くなっています。つまり、フォントのウェイトが増加します。 Green Robot: Android ロボットのロゴ (Bugdroid としても知られる) が 3D になり、より多くの曲線、より多くの寸法、より多くの文字が追加されました。

Windows 10 起動後に黒い画面の問題が発生する Windows 10 起動後に黒い画面の問題が発生する Dec 28, 2023 pm 01:57 PM

コンピュータは現在、基本的に各家庭に設置されている電化製品です。コンピュータを使い続けると、いくつかの奇妙な問題が徐々に現れてきます。最近、多くの友人から、最近のコンピュータの問題について、起動後に黒い画面が表示されると報告されています。何が起こっているのか?実は、この問題を解決するのはとても簡単です。今日は、Win10 のようこそ画面の後の黒い画面の解決策をエディターが提供します。必要な友達は、ぜひ見に来てください。 win10 起動後にロゴが表示された黒い画面の解決策: 操作手順: 1. まず、電源ケーブルが正しく接続されているかどうかを確認し、モニターが損傷していないかどうかを確認します。検出方法はコンピューターの電源をオフにするだけです。モニターの電源をオンにするだけで表示されます。情報なし。信号がない場合は、モニターは正常であり、グラフィックス カード ドライバーに互換性がないことがわかります。

Alipay、4年ぶりにロゴ変更 Alipay、4年ぶりにロゴ変更 Feb 23, 2024 pm 07:07 PM

Alipay は 4 年ごとにロゴを変更する予定ですが、2024 年のロゴはどのようになるでしょうか?ユーザーは、外観が新しくなり、より高度なロゴ スタイルになっていることがわかります。 Alipay の 4 年ぶりの新しいロゴを紹介すると、その具体的な内容がわかります。 Alipay の使い方チュートリアル 4 年ぶりの新しい Alipay ロゴは何ですか? ロゴの表示: 歴史的なスタイル: 1. 2020 年バージョンのロゴ 2、2016 年バージョンのロゴ 3、すべてのバージョンのロゴ ソフトウェアの紹介: 1. このソフトウェアは 2004 年に設立され、1,000 年以上使用されています。サービス。 2. このソフトウェアは、デジタル サービス プロバイダーに製品とサービスを提供する役割を担っており、多くの販売業者がこのソフトウェアに定着しています。

OPPOはカラーロゴの使用を段階的に減らすと発表し、「緑の工場が黒の工場に変わる」というあだ名が付けられ、主要なプラットフォームが黒底のロゴを置き換えるという話題を引き起こした OPPOはカラーロゴの使用を段階的に減らすと発表し、「緑の工場が黒の工場に変わる」というあだ名が付けられ、主要なプラットフォームが黒底のロゴを置き換えるという話題を引き起こした Aug 03, 2023 pm 06:25 PM

8月3日のこのサイトのニュースによると、私たちの友人の多くは、OPPOがすべての主要プラットフォームの公式アカウントのロゴを黒の背景に変更し、以前の象徴的な緑を削除したことを最近発見したため、多くの人から愛称も付けられています. 「緑の工場が黒の工場に変わる。」ネチズンの反応として、OPPOの公式Douyinアカウントはこの変更について懸念を表明し、ブランドイメージの構築をより効果的に支援し、より技術的でフレンドリーな体験を提供するために、将来的には当社のブランドロゴは色の使用を徐々に減らし、カラーフォームは、ブランドと製品の情報をより簡潔かつ効率的に伝えるために公開されます。もちろん、緑は依然としてOPPOブランドの非常に重要な部分であり、インタラクティブなビジュアルデザインでも緑とさまざまな色を使用して、ユーザーと出会うあらゆるシーンを豊かにしていきます。調べてみたところ、以下のことが分かりました

win10起動後の黒い画面問題を解決する2つの方法 win10起動後の黒い画面問題を解決する2つの方法 Dec 21, 2023 pm 03:45 PM

コンピューターの起動後に画面が真っ暗になり、ロゴが表示されます。これは、Win10 システムを使用しているユーザーが遭遇する問題です。まず、接続ケーブルが正常かどうかを確認するか、コンピューターを再起動できます。この記事は次のユーザーによって共有されています。 Win10パソコン起動後、ロゴが表示される場合や黒い画面が表示される場合の解決方法はこちらのサイトをご参照ください。方法 1: 1. まず、[Ctrl+Alt+Del] キーの組み合わせを押して、[タスク マネージャー] をクリックします。タスクマネージャーウィンドウの左上隅にある[ファイル]をクリックし、表示されるドロップダウンメニューで[新しいタスクの実行]を選択します。新しいタスク ウィンドウを作成し、[Explorer.exe] コマンドを入力して、[OK または Enter] を押します (システム管理者権限でこのタスクを作成する場合にチェックします); 2. [Win+S] キーの組み合わせを押して Windows Search を開きます。

See all articles