获得图片文件的图像尺寸大小(支持GIF,JPG,BMP格式)
来源:互联网 发布:美工学徒主要做什么 编辑:程序博客网 时间:2024/05/22 12:10
//====================================================================// 函数: of_getpicturesize()//--------------------------------------------------------------------// 描述: 获得图片文件的图像尺寸大小(支持GIF,JPG,BMP格式)//--------------------------------------------------------------------// 参数: //value stringas_FileName 图片文件名称//referencelong al_PictureWidth 返回图片宽度//referencelong al_PictureHeight返回图片高度//--------------------------------------------------------------------// 返回值: integer1 - 成功,0 - 失败//--------------------------------------------------------------------Integer li_File, li_DataReadBlob lb_DataLong ll_FileLength,ll_PictureWidth,ll_PictureHeightLong ll_DataLen,ll_DataPos,ll_FilePosBoolean lb_LoopFlag = TrueChar lc_Char1,lc_Char2//文件不存在If Not FileExists(as_FileName) Then Return 0//取文件大小ll_FileLength = FileLength(as_FileName)//打开文件li_File = FileOpen(as_FileName,StreamMode!)If li_File = -1 Then Return 0//读取文件li_DataRead = FileRead(li_File,lb_Data)If li_DataRead <= 0 ThenFileClose(li_File)Return 0End If// GIF目前主要有两种类型// 1. 标识为GIF87a, 只是用来存储单幅静止图像// 2. 标识为GIF89a, 可以同时存储若干幅静止图像并进而形成连续的动画// 文件的前 6 个字节为标识:GIF87a 或 GIF89a, 第 7,8 字节为图像宽度(width), // 第 9,10 字节为图像高度(height), 注意两个字节中低位在前// GIF 文件格式判断If String(BlobMid(lb_Data,1,4)) = 'GIF8' Thenll_PictureWidth = Asc(String(BlobMid(lb_Data,7,1))) + Asc(String(BlobMid(lb_Data,8,1))) * 256ll_PictureHeight = Asc(String(BlobMid(lb_Data,9,1))) + Asc(String(BlobMid(lb_Data,10,1))) * 256If ll_PictureWidth > 0 And ll_PictureHeight > 0 Thenal_PictureWidth = ll_PictureWidthal_PictureHeight = ll_PictureHeightFileClose(li_File)Return 1ElseFileClose(li_File)Return 0End IfEnd If// JPEG文件格式// 前 3 个字节为标识: 0xFF,0xD8,0xFFIf String(BlobMid(lb_Data,1,3)) = Char(255) + Char(216) + Char(255) Thenll_DataLen = Len(lb_Data)ll_DataPos = 3ll_FilePos = 3Do While lb_LoopFlagll_DataPos = ll_DataPos + 1ll_FilePos = ll_FilePos + 1lc_Char1 = String(BlobMid(lb_Data,ll_DataPos,1))lc_Char2 = String(BlobMid(lb_Data,ll_DataPos + 1,1))If lc_Char1 = Char(255) And lc_Char2 <> Char(255) ThenIf lc_Char2 >= Char(192) And lc_Char2 <= Char(195) Then//找到尺寸数据ll_PictureWidth = Asc(String(BlobMid(lb_Data,ll_DataPos + 7,1))) * 256 + Asc(String(BlobMid(lb_Data,ll_DataPos + 8,1)))ll_PictureHeight = Asc(String(BlobMid(lb_Data,ll_DataPos + 5,1))) * 256 + Asc(String(BlobMid(lb_Data,ll_DataPos + 6,1)))lb_LoopFlag = FalseElse//没有找到尺寸数据,重新读取文件ll_FilePos = ll_FilePos + Asc(String(BlobMid(lb_Data,ll_DataPos + 3,1))) * 256 + Asc(String(BlobMid(lb_Data,ll_DataPos + 2,1))) + 1If ll_FilePos > ll_FileLength ThenFileClose(li_File)Return 0ElseFileSeek(li_File,ll_FilePos)FileRead(li_File,lb_Data)ll_DataLen = Len(lb_Data)ll_DataPos = 0End IfEnd IfEnd IfIf ll_DataPos = ll_DataLen - 9 And lb_LoopFlag = True Thenll_FilePos = ll_FilePos - 9FileSeek(li_File,ll_FilePos)FileRead(li_File,lb_Data)ll_DataLen = Len(lb_Data)ll_DataPos = 0End IfIf ll_FilePos >= ll_FileLength Thenlb_LoopFlag = FalseEnd IfLoopIf ll_PictureWidth > 0 And ll_PictureHeight > 0 Thenal_PictureWidth = ll_PictureWidthal_PictureHeight = ll_PictureHeightFileClose(li_File)Return 1ElseFileClose(li_File)Return 0End IfEnd If// BMP文件格式// 前两个字节是标识:标识可能有很多种// 第 19,20,21,22 字节为宽度(width), 第 23,24,25,26 字节为高度(height)// 四个字节组成dword, 低位在前If String(BlobMid(lb_Data,1,2)) = 'BM' Thenll_PictureWidth = Asc(String(BlobMid(lb_Data,19,1))) + Asc(String(BlobMid(lb_Data,20,1))) * 256 + Asc(String(BlobMid(lb_Data,21,1))) * 65536 + Asc(String(BlobMid(lb_Data,22,1))) * 16777216ll_PictureHeight = Asc(String(BlobMid(lb_Data,23,1))) + Asc(String(BlobMid(lb_Data,24,1))) * 256 + Asc(String(BlobMid(lb_Data,25,1))) * 65536 + Asc(String(BlobMid(lb_Data,26,1))) * 16777216If ll_PictureWidth > 0 And ll_PictureHeight > 0 Thenal_PictureWidth = ll_PictureWidthal_PictureHeight = ll_PictureHeight////将图像的真实大小转换为PBUnit大小,并返回//al_PictureWidth = PixelsToUnits(ll_PictureWidth,XPixelsToUnits!)//al_PictureHeight = PixelsToUnits(ll_PictureHeight,YPixelsToUnits!)FileClose(li_File)Return 1ElseFileClose(li_File)Return 0End IfEnd IfReturn 0
阅读全文
0 0
- 获得图片文件的图像尺寸大小(支持GIF,JPG,BMP格式)
- 获得图片文件的图像尺寸大小
- 解决eWebEditor上传图片提示:请选择一个有效的文件,支持的格式有(GIF|JPG|JPEG|BMP|PNG)!
- png,bmp,jpg,gif格式图像的区别
- java 将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换
- BMP、JPG、GIF图像的显示
- bmp,gif,jpg等图像的文件格式
- C#使用GDAL将tif图像转换为jpg、bmp、png和gif格式的图像
- 缩略图实现,将图片(jpg、bmp、png、gif等等)真实的变成想要的大小
- VC获取JPG、GIF文件的尺寸
- VC 显示jpg,gif,bmp等格式图片
- 获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP'
- fso获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP
- java将图片缩放实现类(能将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换)
- VC 中BMP、JPG、GIF图像的显示
- 获得jpg文件的实际尺寸
- 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片的两个函数
- VB6.0用GDI+保存图像为BMP\JPG\PNG\GIF格式终结版。
- linux的目录结构
- 欢迎使用CSDN-markdown编辑器
- TNS-12531: TNS:cannot allocate memory
- RAC关闭、启动、重启步骤:10g、11g
- HackerRank-Mehta and the Typical Supermarket
- 获得图片文件的图像尺寸大小(支持GIF,JPG,BMP格式)
- Hibernate的常见HQL语句
- 线程池
- SSD性能优化之4K对齐
- WebClient.DownLoadData下载网页内容
- Jupyter Notebook 介绍
- 破解Photoshop es6
- e.target.files[0]层层剖析
- HDU1421 搬寝室 简单DP