当前位置:首页 > 生活百科

gd是什么格式文件(手机打开gd文件方法)

栏目:生活百科日期:2025-03-21浏览:0

又到了一个大家非常熟悉的库了,对于图像图形的处理来说,GD 库是 PHPer 们绕不过去的一道坎。从很早很早的 CMS 或者 Discuz 时代,各类开源软件在安装的时候就会明确地指出 GD 库是它们必备的一个扩展。当然,在现在的 PHP 版本中,相信大家也不会在编译的时候忽略掉这个库。不管你是为图片加水印、生成缩略图还是制作验证码图片,都离不开 GD 库的身影。

当然,我们还是由浅入深地学习一些 GD 库中的常用或好玩的函数。

当前环境中的 GD 库信息

首先,我们可以查看下当前 PHP 环境中的 GD 库版本及支持的图片格式信息。

var_dump(gd_info());// array(13) {//     &["GD Version"]=&>//     string(26) "bundled (2.1.0 compatible)"//     &["FreeType Support"]=&>//     bool(true)//     &["FreeType Linkage"]=&>//     string(13) "with freetype"//     &["GIF Read Support"]=&>//     bool(true)//     &["GIF Create Support"]=&>//     bool(true)//     &["JPEG Support"]=&>//     bool(true)//     &["PNG Support"]=&>//     bool(true)//     &["WBMP Support"]=&>//     bool(true)//     &["XPM Support"]=&>//     bool(false)//     &["XBM Support"]=&>//     bool(true)//     &["WebP Support"]=&>//     bool(true)//     &["BMP Support"]=&>//     bool(true)//     &["JIS-mapped Japanese Font Support"]=&>//     bool(false)//   }

gd_info() 函数可以查看到当前 GD 库的版本信息,其它字段就是各种图片模式的支持情况,可以看到在我的系统环境中,除了 XPM 这种格式不支持外,其它各种图片格式都是正常支持的。最后一个是日文字体的支持,我们当前环境中也是没有的。

获取图片基本信息

getimagesize(),获取图片信息的这个函数,从名字上看是获取图片大小的一个函数但也包含一些其它的信息,而且这个函数其实和 GD 库没什么太大的关系,也就是说不需要 GD 库的扩展其实这个函数也是可以使用的。

var_dump(getimagesize("../img/1.png"));// array(6) {//     &[0]=&>//     int(150)//     &[1]=&>//     int(150)//     &[2]=&>//     int(3)//     &[3]=&>//     string(24) "width="150" height="150""//     &["bits"]=&>//     int(8)//     &["mime"]=&>//     string(9) "image/png"//   }

返回的结果其实非常简单,0 和 1 分别就是图片的宽高,2 是图片的类型,之前的文章就讲过它对应的就是 IMAGETYPE_ 常量中对应的图片类型。3 是文字形式的图片宽高,可以直接用于 img 标签中,可以看出来,PHP 真的就是为了 web 而生的语言啊,连图片大小获取的函数都要带个这样的属性回来。bits 就是图片的 颜色比特位数 。mime 则是图片的 MIME 类型了。

另外,getimagesize() 函数还有第二个参数,这是一个引用类型的参数,它将以一个关联数组返回不同的 JPG APP 标识。也就是说,它也是针对 JPG 相关的图片获取一些额外的信息,其实就有点像上篇文章学习过的 EXIF 里面的信息。

var_dump(getimagesize("../img/2.jpg", $info));// array(7) {//     &[0]=&>//     int(300)//     &[1]=&>//     int(244)//     &[2]=&>//     int(2)//     &[3]=&>//     string(24) "width="300" height="244""//     &["bits"]=&>//     int(8)//     &["channels"]=&>//     int(3)//     &["mime"]=&>//     string(10) "image/jpeg"//   }var_dump($info);// array(1) {//     &["APP0"]=&>//     string(14) "JFIF??"//   }

此外,我们如果是 JPG 图片的话,还会多返回一个 channels 属性,表示的是如果图片是 RBG 格式的,返回的就是 3 ,如果是 CMYK 格式的,返回的就是 4 。

我们还可以使用 getimagesize() 获得远程文件的信息。

var_dump(getimagesize("https://upload-images.jianshu.io/upload_images/1074666-8df66a94d61cac74.png?imageMogr2/auto-orient/strip|imageView2/2/w/374/format/webp"));// array(6) {//     &[0]=&>//     int(374)//     &[1]=&>//     int(617)//     &[2]=&>//     int(18)//     &[3]=&>//     string(24) "width="374" height="617""//     &["bits"]=&>//     int(8)//     &["mime"]=&>//     string(10) "image/webp"//   }

除了直接操作图片文件之外,我们还可以直接从字符串中获得图片的信息。不过这些字符串一般也都是读取到的图片文件的二进制信息。你直接来一句真正的 Hello World 之类的字符串那打死它也解析不出来什么图片内容的。

$data = file_get_contents('../img/1.png');var_dump(getimagesizefromstring($data));// array(6) {//     &[0]=&>//     int(150)//     &[1]=&>//     int(150)//     &[2]=&>//     int(3)//     &[3]=&>//     string(24) "width="150" height="150""//     &["bits"]=&>//     int(8)//     &["mime"]=&>//     string(9) "image/png"//   }

获得图片的一些信息

我们可以通过图片的类型来获取文件的扩展名,这个类型常量也是 IMAGETYPE_ 类型的。

var_dump(image_type_to_extension(IMAGETYPE_PNG)); // string(4) ".png"var_dump(image_type_to_extension(IMAGETYPE_JPEG, FALSE)); // string(4) "jpeg"

image_type_to_extension() 函数有第二个参数,如果设置为 false 的话,就不会加上那个 . 。

var_dump(image_type_to_mime_type(IMAGETYPE_PNG)); // string(9) "image/png"var_dump(image_type_to_mime_type(IMAGETYPE_JPEG)); // string(10) "image/jpeg"

同样地,也有 image_type_to_mime_type() 这个函数来获得图片的 MIME 信息内容。另外,还有一个函数可以获得当前系统中所支持的图片类型都有哪些。

var_dump(imagetypes()); // int(111)

额,很奇怪吧,怎么只返回了一个 111 ?其实它是保存的二进制图片支持信息,比如如果我们想知道当前系统中有没有 PNG 图片的支持,就可以这样使用:

var_dump(imagetypes() && IMAGETYPE_PNG); // int(3)

和 IMAGETYPE_PNG 与之后的结果就是 IMAGETYPE_PNG 本身的值,这就说明当前系统中是支持这个图片类型的操作的。

小例子:创建一张自己的图片

最后,我们再来看一个小例子,其实就是利用 GD 库中的这些函数来创建一张简单的小图片。

$im = @imagecreate(100, 50) or die("Cannot Initialize new GD image stream");$background_color = imagecolorallocate($im, 255, 255, 255);$text_color = imagecolorallocate($im, 233, 14, 91);imagestring($im, 1, 5, 5,  "Test 测试", $text_color);imagepng($im, '../img/test.png');imagedestroy($im);

其实每个函数的内容都很好理解,函数名就已经写得很清楚了。当然,我们后面的文章中将详细地再学习一次。这个最终生成的图片中,中文也是乱码的,不过它已经是可以当做一个图片验证码来使用了,是不是非常地简单?

总结

今天的内容不多,也都是比较基础浅显的一些函数的使用。当然,这只是开头的第一篇文章,GD 库不是一个简单的小扩展,它里面的内容非常多,能够实现的功能也非常复杂,不要走开,持续关注哦!

“gd是什么格式文件(手机打开gd文件方法)” 的相关文章

oracle性能调优总结(数据库性能优化方法)

Oracle在性能调优中提供了丰富的工具和报表支持,如何从众多指标获取有价值的调优信息则需要开发测试人员具有一定的基础和经验。本文主要对近几年碰到频率较高的几类...

ppt宽屏怎么设置正常(ppt超宽屏比例)

在日常工作中,我们经常会使用到各种办公软件,尤其是PPT软件。我们经常需要调整PPT的显示比例,那么,我们如何调整PPT的显示比例呢?今天小编就教各位调整PPT...

win10麦克风在哪里设置(详细操作步骤请看本篇)

win10电脑麦克风怎么打开?一般正常情况下win10系统中的麦克风默认是开启的,如果后期将麦克风给关闭的话那么就需要重新开启。很多朋友可能在无意之间关闭了麦克...

三星手机如何刷机解锁密码(手机刷机解锁教程)

今天凌晨,大量三星手机系统崩溃,表现为手机震动并屏幕闪烁,只能进入恢复界面,双清后可进入系统,但是锁屏之后再次出现同样的问题!据了解,此次受影响的机型主要为S系...

取消大小周后字节跳动首次发薪(降薪近20%)

“鸣,条危,速归”,8月31日,字节跳动的一位员工在内网发出感叹。这是字节跳动取消“大小周”后的首个发薪日,看着银行短信上的数字,字节跳动员工们在内网上炸开了锅...

o2o运营有哪些优势(o2o运营作用分析)

2020年的微信红包至今已7年,从早期的拜年、社交红包,到现在的红包大战,从线上到线下,一场围绕“红包”的浪潮,已经在悄然改变我们的生活。19年的春节,相信大部...

外汇行情软件排行榜(炒外汇开户流程)

转眼2021年已经接近尾声了,世界经济的发展遭遇了严重冲击,国家、社会乃至个人都不得不面临这一场危机带来的严峻挑战。然而危中有机,在紧张的形势下也蕴含了新的机遇...

gif在线制作器推荐(免费gif制作器软件)

大家平时上网表情包都用的不少吧,但你知道那些好玩的GIF表情包该怎么做吗?今天和大家分享两个神器,用它们就能轻松截取视频画面赖做成动态表情包哦!!!需要的赶紧学...

优化一个网站步骤有哪些,快速优化网站的7个布局小技巧

网站优化非“一日之功”,网站优化是长期且需要花时间的工作,所以站长要想做到稳定的排名也是十分不容易的,其中特别对新站来说。因为搜索引擎对新站都有一个考核期,所以...

tutorabc外教英语效果如何,亲身经历分享给大家

看到网上很多小伙伴都在问tutorabc学英语怎么样之类的问题,看来大家学英语兴致都很高啊哈哈哈,的确英语现在不论在生活中还是工作上都变得越来越重要,英语说得好...