gd是什么格式文件,手机打开gd文件方法
又到了一个大家非常熟悉的库了,对于图像图形的处理来说,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 = https://www.xkbbtang.com/bk/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"
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- outlook2016使用教程技巧,outlook2016数据文件设置
- pua男是什么意思,五大pua男的特征
- off是开还是关,off是什么意思
- 口加当是什么字,口字旁加当是什么字
- sku是什么意思啊,商品sku是指什么
- 第四爱是什么意思,四爱是什么意思
- 50岁60岁70岁80岁90岁100岁是什么之年
- 地瓜和红薯的区别是什么,红薯和地瓜一样吗
- 女生矜持和拒绝的区别是什么
- like to do 和like doing的区别是什么,like doing和like to do的区别