Heim Backend-Entwicklung PHP-Tutorial 说说PHP作图(二)_PHP教程

说说PHP作图(二)_PHP教程

Jul 13, 2016 pm 05:35 PM
php zwei 作图 方法 verwenden von 简单 Sprechen Sie darüber

上次说了一种简单的回避GD的作图方法,而后又用GD作了最简单的一幅“图”——直线。
这次我就接着画直线向下说。上次代码中详细解释过的部分,这次不再赘述。


  Header("Content-type: image/png");
  $im = ImageCreate (200, 100);
  $col_black = ImageColorAllocate($im, 0,0,0);
  $col_orn = ImageColorAllocate($im, 255,192,0);
  // 今天用橘色吧。
  // 跟 imageline 函数完全相同的用法,
  ImageDashedLine($im,0,100,199,100,$col_orn);
  // 这样就画了一条虚线。
 
  // 下面我们来做个试验。用以说明一个问题。
  $col_yel = ImageColorAllocate($im, 255,255,0);
  // 黄色。
  ImageLine($im,0,99,199,99,$col_yel);
  // 在图象的最下沿画了一条黄色的线。
  ImageLine($im,200,0,200,100,$col_orn);
  // 试图在图象最右沿画一条澄色的线,结果什么也没有。
  // 这表明,宽200,高100的图象,其坐标的范围是(0,0)到(199,99)。
 
  ImagePNG($im);
  ImageDestroy($im);
  // 这一段先结束吧。
?>


    接下来这个效果就爽了!我也是现学现卖。PHP4.0.6以上增加了这个用法——可以用交替的
颜色画线!示例如下:


  Header("Content-type: image/png");
  $im = ImageCreate (200, 100);
  $col_black = ImageColorAllocate($im, 0,0,0);
  $col_orn = ImageColorAllocate($im, 255,192,0);
  $col_red = ImageColorAllocate($im, 255,0,0);

  $style=array($col_red,$col_red,$col_black,$col_orn,$col_orn,$col_orn,$col_black);
  ImageSetStyle($im, $style);
  ImageLine($im, 0, 50, 199, 50, IMG_COLOR_STYLED);

  ImagePNG($im);
  ImageDestroy($im);
?>

看看效果吧。

    其中我用空行分割开的那三行,说明一下。定义了一个数组 $style,它的成员是一系列的颜色;
然后执行了一个函数,而后用 IMG_COLOR_STYLED “颜色”画出来的是这么神奇的“直线”——
红色、黑色、橙色交替的效果。仔细看一下你就会发现,红、黑、橙交替的顺序,就是我们定义的
$style数组成员的序列:红、红、黑、橙、橙、橙、黑,然后周而复始……
    看明白了吗?注意,这个函数在PHP4.0.6以后才支持。

 

    有了我详细讲解的画线的基础,我想把画其他几何图形的函数一笔代过。需要提示大家的是,无论
画哪种几何图形,无非是抓住这种图形的几个要素。先不算颜色,各种图形的要素如下:

点,两个要素:横坐标、纵坐标

矩形,四个要素:左上角、右下角的横、纵坐标

弧,这样理解:弧可以包括圆弧、椭圆弧;画圆弧画他360度就可以成一个圆,画椭圆弧画他360度也就画
              成一个椭圆;所以这个弧的要素有六:中心点横、纵坐标,横轴长、纵轴长、弧的始、终点。

看下面这段例子。


  Header("Content-type: image/png");
  $im = ImageCreate (200, 100);
  $col_blk = ImageColorAllocate($im, 0,0,0);
  $col_orn = ImageColorAllocate($im, 255,192,0);
  $col_red = ImageColorAllocate($im, 255,0,0);
  $col_grn = ImageColorAllocate($im, 0,255,0);
  $col_blu = ImageColorAllocate($im, 0,0,255);
 
  ImageSetPixel($im,20,10,$col_orn);
  // 小小一个点,不知道能否看得见?
  ImageRectangle($im,25,20,95,55,$col_blu);
  // 蓝色的矩形。
  ImageArc($im,20,85,50,40,225,360,$col_grn);
  // 绿色的椭圆弧,中心在(20,85),横轴50,纵轴40,225度至360度。
  // 由此可见,这里的圆弧始、终点是以角度计量,
  // 是以水平向右的方向为0度,顺时针计算的。
  ImageArc($im,160,60,40,40,0,360,$col_orn);
  // 橙色的整圆。只要横轴长与纵轴长相等,就是正圆。
  // 上高中我们就学过:圆是椭圆的特例嘛!
  // 最后再画一段圆弧。圆心能否在图象以外?
  ImageArc($im,160,140,240,240,0,360,$col_red);
  // 可以!
 
  ImagePNG($im);
  ImageDestroy($im);
?>

    作图当然免不了要把某一区域涂成某种颜色。GD有三种着色方式,一种是矩形区域着色,
一种是指定的点所处的封闭区域着色,另一种是指定的颜色所包围的区域着色。看以下的例子:

  Header("Content-type: image/png");
  $im = ImageCreate (200, 100);
  $col_blk = ImageColorAllocate($im, 0,0,0);
  $col_orn = ImageColorAllocate($im, 255,192,0);
  $col_yel = ImageColorAllocate($im, 255,255,0);
  $col_red = ImageColorAllocate($im, 255,0,0);
  $col_grn = ImageColorAllocate($im, 0,255,0);
  $col_blu = ImageColorAllocate($im, 0,0,255);
 
  ImageFilledRectangle($im,20,10,100,50,$col_blu);
  ImageFilledRectangle($im,5,40,50,90,$col_red);
  ImageFilledRectangle($im,40,80,100,95,$col_orn);
  ImageFilledRectangle($im,90,35,110,90,$col_yel);
  // 以上是第一种着色。直接绘制矩形。
  // 我故意用四个不同颜色的矩形围起一小块区域,
  // 用以说明第二种着色。
 
  ImagePNG($im);
  ImageDestroy($im);
 
  // 看一下效果。
 
?>

接着:


  Header("Content-type: image/png");
  $im = ImageCreate (200, 100);
  $col_blk = ImageColorAllocate($im, 0,0,0);
  $col_orn = ImageColorAllocate($im, 255,192,0);
  $col_yel = ImageColorAllocate($im, 255,255,0);
  $col_red = ImageColorAllocate($im, 255,0,0);
  $col_grn = ImageColorAllocate($im, 0,255,0);
  $col_blu = ImageColorAllocate($im, 0,0,255);
 
  ImageFilledRectangle($im,20,10,100,50,$col_blu);
  ImageFilledRectangle($im,5,40,50,90,$col_red);
  ImageFilledRectangle($im,40,80,100,95,$col_orn);
  ImageFilledRectangle($im,90,35,110,90,$col_yel);
  // 以上是第一种着色。直接绘制矩形。
  // 我故意用四个不同颜色的矩形围起一小块区域,
>   // 用以说明第二种着色。
 
  ImageFill($im,70,70,$col_grn);
  // 这是第二种着色。
 
  ImageRectangle($im,120,40,190,90,$col_grn);
  // 暂且画一个矩形来做框吧。事实上任何样子的边界都可以做框。
  ImageFilltoBorder($im,130,50,$col_grn,$col_orn);
  // 把绿色矩形框内涂成橙色。
  // 只要指定的点位于这个“框”的范围内即可,与该点在区域内的位置无关。
  // 这个函数其实是这样工作的:
  // 从指定的点开始,向外,寻找指定颜色的边界,如果找到,则停止,
  // 找不到,就把途经的点涂成需要的颜色。
 
  ImagePNG($im);
  ImageDestroy($im);
 
  // 看一下效果。
  // 现在我们作出的图已经是花花绿绿了,可是在浏览器里,图片上,
  // 右键->属性:只有 214 个字节!
 
?>

    这一次说到这里吧先。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508315.htmlTechArticle上次说了一种简单的回避GD的作图方法,而后又用GD作了最简单的一幅“图”——直线。 这次我就接着画直线向下说。上次代码中详细解释...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles