您现在的位置是:群英 > 开发技术 > PHP语言
gd是什么文件格式,手机中如何打开gd文件
Admin发表于 2022-06-18 17:02:371837 次浏览
关于“gd是什么文件格式,手机中如何打开gd文件”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“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 = 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是什么文件格式,手机中如何打开gd文件内容,欢迎关注群英网络资讯频道,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: gd文件
相关信息推荐
2022-02-16 18:08:07 
摘要:PHP中exp函数用来做什么?PHP中,exp函数是用来计算e的指数的,对于指数函数我们在学习数学的时候都有学习到,PHP中的指数函数是exp()。接下来我们就来了解看看exp()函数的使用。
2022-09-29 17:49:45 
摘要:本文详细讲解了Go语言之嵌入类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-24 11:05:00 
摘要:两种检测方法:1、使用array_key_exists()函数,可检查数组中是否存在指定索引,语法“array_key_exists(指定索引值,数组)”,返回值为true则存在,反之则不存在。2、使用isset()函数检测指定索引对应的数组元素是否存在即可,语法“isset($数组名[指定索引值])”,返回值为true则存在,反之则不存在。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部