PEAR提供了Image_3D Package来创建3D图像。图像或光线在3D空间中按照X、Y 、Z 坐标定位。生成的图像将呈现在2D空间中,可以存储为 PNG、SVG 格式,或输出到Shell。通过Image_3D可以很方便生成一些简单的3D对象,例如立方体、锥体、球体、文本和饼图。查了一
PEAR提供了Image_3D Package来创建3D图像。图像或光线在3D空间中按照X、Y 、Z 坐标定位。生成的图像将呈现在2D空间中,可以存储为 PNG、SVG 格式,或输出到Shell。通过Image_3D可以很方便生成一些简单的3D对象,例如立方体、锥体、球体、文本和饼图。查了一下PEAR文档关于Image_3D的实例一个也没有~囧~,只好自己研究一下,将经验分享给大家,请多多拍砖。言归正传,Image_3D需要PEAR和GD(配置php.ini)的支持。
1. 安装Image_3D
下载Image_3D Package ,目前最新版本为:0.4.1 alpha
官方下载:http://pear.php.net/package/Image_3D/download
将压缩包放到有pear.bat的目录中,例如:c:\php,若是WAMP5的话则为c:\wamp\php。
执行 pear install Image_3D-0.4.1.gz 安装Package:
安装完毕,Image_3D会在 C:\wamp\php\PEAR\Image 目录中。
2. 3D坐标系
Image_3D的坐标系及旋转请参考下图,用于缩放、旋转或移动物体:
3. 绘制圆锥体
代码如下:
<span><?php </span><span>//调用3D图形类 </span><span>require_once</span><span>(</span><span>'Image/3D.php'</span><span>)</span>; <span>//创建一个三维空间 </span><span>$image </span><span>= </span><span>new </span>Image_3D<span>()</span>; <span>$image</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>255</span><span>, </span><span>255</span><span>))</span>; <span>//在坐标系左下方创建一个红色光点 </span><span>$light1 </span><span>= </span><span>$image</span><span>-></span>createLight<span>(</span><span>"Light"</span><span>,</span><span>array</span><span>(-</span><span>100</span><span>, </span><span>100</span><span>, -</span><span>100</span><span>))</span>; <span>$light1</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>0</span><span>, </span><span>0</span><span>))</span>; <span>//在坐标系右上方创建一个绿色光点 </span><span>$light2 </span><span>= </span><span>$image</span><span>-></span>createLight<span>(</span><span>"Light"</span><span>,</span><span>array</span><span>(</span><span>100</span><span>, -</span><span>200</span><span>, -</span><span>50</span><span>))</span>; <span>$light2</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>0</span><span>, </span><span>200</span><span>, </span><span>0</span><span>))</span>; <span>//创建3D圆锥体 </span><span>$cone </span><span>= </span><span>$image</span><span>-></span>createObject<span>(</span><span>'cone'</span><span>,</span><span>array</span><span>(</span><span>'detail'</span>=><span>360</span><span>))</span>; <span>$cone</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>255</span><span>, </span><span>255</span><span>))</span>; <span>//按X,Y,Z轴缩放 </span><span>$cone</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'scale'</span><span>, </span><span>array</span><span>(</span><span>80</span><span>, </span><span>150</span><span>, </span><span>80</span><span>)))</span>; <span>//按X,Y,Z轴旋转 </span><span>$cone</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'rotation'</span><span>, </span><span>array</span><span>(</span><span>15</span><span>, </span><span>0</span><span>, </span><span>20</span><span>)))</span>; <span>//按X,Y,Z轴移动 </span><span>$cone</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'move'</span><span>, </span><span>array</span><span>(</span><span>0</span><span>, -</span><span>50</span><span>, </span><span>0</span><span>)))</span>; <span>//创建2D输出图像 //渲染效果,Image_3D共提供了种效果:Isometric,Perspectively,Raytrace //参考...\PEAR\Image\3D\Renderer目录 </span><span>$image</span><span>-></span>createRenderer<span>(</span><span>'perspectively'</span><span>)</span>; <span>//图像驱动,也可以SVG,ASCII等 //参考...\PEAR\Image\3D\Driver目录 </span><span>$image</span><span>-></span>createDriver<span>(</span><span>'gd'</span><span>)</span>; <span>//创建输出图片名称及大小 </span><span>$image</span><span>-></span>render<span>(</span><span>400</span><span>, </span><span>300</span><span>, </span><span>'object.png'</span><span>)</span>; <span>//显示效果图 </span><span>echo </span><span>'<img src="/static/imghwm/default1.png" data-src="object.png" class="lazy" alt="PHP绘制3D图形" >'</span>; <span>?></span></span>
效果图:
4. 3D文字效果
将上例创建3D圆锥体部分代码替换为:
<span>//创建3D字体 </span><span>$text </span><span>= </span><span>$image</span><span>-></span>createObject<span>(</span><span>'text'</span><span>,</span><span>'cnblogs'</span><span>)</span>; <span>$text</span><span>-></span>setColor<span>(</span><span>new </span>Image_3D_Color<span>(</span><span>255</span><span>, </span><span>255</span><span>, </span><span>255</span><span>))</span>; <span>$text</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'scale'</span><span>, </span><span>array</span><span>(</span><span>10</span><span>, </span><span>10</span><span>, </span><span>20</span><span>)))</span>; <span>$text</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'rotation'</span><span>, </span><span>array</span><span>(</span><span>20</span><span>, </span><span>0</span><span>, </span><span>20</span><span>)))</span>; <span>$text</span><span>-></span>transform<span>(</span><span>$image</span><span>-></span>createMatrix<span>(</span><span>'move'</span><span>, </span><span>array</span><span>(-</span><span>150</span><span>, -</span><span>100</span><span>, </span><span>0</span><span>)))</span>;
效果图:
源代码下载:

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),