精易论坛

标题: 通过字节集获取图片和视频的格式 [打印本页]

作者: linzg3    时间: 2024-12-18 14:45
标题: 通过字节集获取图片和视频的格式
本帖最后由 linzg3 于 2024-12-18 15:00 编辑

1.示例代码实现的目的是获取图片(PNG,JPEG,GIF,BMP)和视频(MP4,AVI)的格式。各个文件的头部字节集:
PNG 头8个字节集是:{137,80,78,71,13,10,26,10}
JPEG 头3个字节集是:{255,216,255}
GIF 头4个字节集是:{71,73,70,56}
BMP 头2个字节集是:{66,77}
MP4 头7个字节集是:{0, 0, 0, 20, 102, 116, 121}
AVI 头4个字节集是:{82,73,70,70}

图片字节集 = {137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,64,0,0,0,64,8,6,0,0,0,170,105,113,222,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,12,240,73,68,65,84,120,94,221,91,9,144,20,213,25,254,254,222,93,150,67,20,41,21,47,196,43,209,176,50,211,61,11,17,226,17,73,188,56,36,72,5,80,193,233,1,44,80,41,16,53,70,163,81,49,145,68,36,26,66,169,32,137,236,244,0,162,172,26,84,148,8,241,72,76,5,140,236,116,247,32,30,241,130,16,47,64,33,32,44,187,236,244,31,186,231,216,158,153,238,153,238,217,93,72,236,42,10,152,247,254,255,189,247,245,255,254,187,9,7,225,233,63,73,63,203,216,207,53,16,232,36,131,185,15,129,78,2,208,7,224,62,0,85,129,176,13,140,237,96,222,206,36,108,3,120,59,1,255,76,26,120,58,177,56,184,181,35,183,72,29,193,252,156,137,239,118,111,108,217,247,125,8,116,33,51,70,0,56,165,13,235,252,137,137,158,161,230,150,213,234,227,161,205,109,224,227,72,218,174,0,136,97,253,26,129,104,40,131,47,6,208,173,253,55,75,47,0,120,46,174,4,22,182,23,239,118,1,32,20,209,70,49,11,211,0,190,192,101,99,73,128,...}
这个图片通过以上对比得出 .png的图片

示例代码如下:


  
子程序名返回值类型公开备 注
获取字节集文件格式文本型 
参数名类 型参考可空数组备 注
头部字节集字节集头部8位字节集
变量名类 型静态数组备 注
第一位字节集字节集 
' //取第一位字节集然后比较
第一位字节集 = 取字节集左边 (头部字节集, 1)
判断 (第一位字节集 = { 137 })
如果真 (头部字节集 = { 137, 80, 78, 71, 13, 10, 26, 10 })
返回 (创建键值表 (“format”, “.png”).到JSON (假, , , , ))

判断 (第一位字节集 = { 255 })
如果真 (取字节集左边 (头部字节集, 3) = { 255, 216, 255 })
返回 (创建键值表 (“format”, “.jpg”).到JSON (假, , , , ))

判断 (第一位字节集 = { 71 })
如果真 (取字节集左边 (头部字节集, 4) = { 71, 73, 70, 56 })
返回 (创建键值表 (“format”, “.gif”).到JSON (假, , , , ))

判断 (第一位字节集 = { 66 })
如果真 (取字节集左边 (头部字节集, 2) = { 66, 77 })
返回 (创建键值表 (“format”, “.bmp”).到JSON (假, , , , ))

判断 (第一位字节集 = { 0 })
如果真 (取字节集左边 (头部字节集, 7) = { 0, 0, 0, 20, 102, 116, 121 })
返回 (创建键值表 (“format”, “.mp4”).到JSON (假, , , , ))

判断 (第一位字节集 = { 82 })
如果真 (取字节集左边 (头部字节集, 4) = { 82, 73, 70, 70 })
返回 (创建键值表 (“format”, “.avi”).到JSON (假, , , , ))




返回 ( “上传文件格式不正确”)


i支持库列表   支持库注释   
e2eeE2EE互联网服务器套件



作者: lidusan    时间: 2024-12-18 14:51
好厉害.学习下
作者: 谈谈的味道    时间: 2024-12-18 14:53
6666666666666666666666666666
作者: zxw0402    时间: 2024-12-18 15:13
过两天给你做成汇编版的
作者: 何浩文    时间: 2024-12-18 15:58
支持开源~!感谢分享。
作者: linzg3    时间: 2024-12-18 16:21
zxw0402 发表于 2024-12-18 15:13
过两天给你做成汇编版的

好耶
作者: pshq123    时间: 2024-12-18 17:06
6666666666666666666666
作者: wh1234567    时间: 2024-12-18 17:08
感谢分享
作者: pipicool    时间: 2024-12-18 18:05
学习一下
作者: mytiger    时间: 2024-12-18 18:30
感谢分享~~
作者: 784326742    时间: 2024-12-18 18:40
缺陷就是必须读入,那么超大文件。。。
作者: 卡卡1111    时间: 2024-12-18 18:52
        支持开源~!感谢分享
作者: qqmqqg    时间: 2024-12-18 19:33
6666666666666666666
作者: ttggnn    时间: 2024-12-18 20:00
支持开源~!感谢分享
作者: aosheng    时间: 2024-12-18 20:04
666666666666666666666666666666666
作者: a358498501    时间: 2024-12-18 21:36
支持开源~!感谢分享
作者: 豆豆灰常开心    时间: 2024-12-19 06:45
感谢楼主分享!
作者: 查过    时间: 2024-12-19 06:49
已经顶贴,感谢您对论坛的支持!
作者: qwe111qwe    时间: 2024-12-19 06:59
感谢分享!!!!!
作者: year1970    时间: 2024-12-19 08:02
感谢分享
作者: renhe2018    时间: 2024-12-19 08:17
确实是个好东西啊。
作者: 一指温柔    时间: 2024-12-19 08:35
#在这里快速回复# 感谢分享!!!!
作者: wh1234567    时间: 2024-12-19 09:01
感谢分享
作者: 美味萝卜    时间: 2024-12-19 10:00
支持开源~!感谢分享
作者: wjswzj0    时间: 2024-12-19 10:12
感谢分享
作者: Goto1    时间: 2024-12-19 10:34
支持开源~!感谢分享。
作者: kyo9766    时间: 2024-12-19 11:27
简单实用,感谢分享
作者: xxbing    时间: 2024-12-19 19:53
下载学习一下,感谢分享
作者: 豆豆灰常开心    时间: 2024-12-20 07:14
已经顶贴,感谢您对论坛的支持!
作者: 查过    时间: 2024-12-20 07:18
感谢楼主分享!
作者: please    时间: 2024-12-20 09:37
感谢分享,支持开源!!!
作者: 阿白不爱吃菜    时间: 2024-12-21 02:31
  
子程序名返回值类型公开备 注
图片格式判断_字节集文本型 支持常见图片格式判断,字节集判断
参数名类 型参考可空数组备 注
文件字节集字节集
变量名类 型静态数组备 注
文件头文本型 
文件头 = 字节集_字节集到十六进制2 (取字节集左边 (文件字节集, 10))
' 文件字节集 = 到字节集 (“”)  ' 清空
' 输出调试文本 (文件头)
判断 (取文本左边 (文件头, 4)“FFD8”)
返回 (“jpg”)
判断 (取文本左边 (文件头, 10)“0000020000” 取文本左边 (文件头, 10)“0000100000”)
返回 (“tga”)
判断 (取文本左边 (文件头, 12)“474946383961” 取文本左边 (文件头, 12)“474946383761”)
返回 (“gif”)
判断 (取文本左边 (文件头, 8)“89504E47”)
返回 (“png”)
判断 (取文本左边 (文件头, 4)“424D”)
返回 (“bmp”)
判断 (取文本左边 (文件头, 2)“0A”)
返回 (“pcx”)
判断 (取文本左边 (文件头, 4)“4D4D” 取文本左边 (文件头, 4)“4949”)  ' 其实正版是 49 49 2A 00 ,4D 4D 00 2A
返回 (“tiff”)
判断 (取文本左边 (文件头, 16)“0000010001002020” 取文本左边 (文件头, 14)“00001001002020”)
返回 (“ico”)
判断 (取文本左边 (文件头, 16)“0000020001002020”)
返回 (“cur”)
判断 (取文本左边 (文件头, 8)“464F524D”)
返回 (“iff”)
判断 (取文本左边 (文件头, 8)“52494646”)
返回 (“ani”)
返回 (“”)


作者: please    时间: 2024-12-21 09:37
感谢分享,支持开源!!!
作者: please    时间: 2024-12-22 09:38
感谢分享,支持开源!!!
作者: please    时间: 2024-12-23 09:39
感谢分享,支持开源!!!
作者: 418235144    时间: 2024-12-23 16:33
感谢分享,支持开源!!!

作者: 胖子葛格    时间: 2024-12-25 18:45
感谢大神分享~!
作者: ytc    时间: 2024-12-26 16:48
有bug,互联网图片的webp格式也是82, 73, 70, 70 开头,一般avi格式的视频都比较大,我觉得再要判断一下字节集长度!譬如大于30M的是视频,否则就是webp图片
作者: linzg3    时间: 2024-12-27 11:29
ytc 发表于 2024-12-26 16:48
有bug,互联网图片的webp格式也是82, 73, 70, 70 开头,一般avi格式的视频都比较大,我觉得再要判断一下字 ...

补充回复:
WebP文件头的十进制表示如下:
|  82  |  73  |  70  |  70  |  File Size (4 bytes) |  87  |  69  |  66  |  80  |
WebP文件头的字节集为:RIFF(82 73 70 70)+ 文件大小 + WEBP(87 69 66 80)
AVI文件头的字节集为:RIFF(82 73 70 70)+ 文件大小 + AVI(41 56 49)
作者: gqohui455    时间: 2024-12-30 01:53
感谢大神分享~!




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4