linux 读取png图片大小,读取 png 图片的宽高信息
#include
// 保留,在读取 png 头部信息的是,每次读取到 0D 0A 读取就会产生错误,如果 0D 0A 修改为其他的数据,则数据可以正常读取,不知道为什么 ----文件打开的时候, 将读取文件的方式设置为 二进制 流文件读取就可以。
//typedef struct
//{
// char HeadInfo[8]; // 文件头信息
// int IhderChunkLength; // IHDR 数据块的长度信息
// int IhderChunkType; // IHDR 数据块类型码 // 下面是数据块的具体数据了, 最前面两个是png 图片的宽高
// int PngImgWidth; // 宽
// int PngImgHeght; // 高
//} PNG_FILE_HEAD;
/*
* 函数说明: 读取 png 文件中,图片的宽高信息
* 参数描述: pathName, 输入参数,文件的路径名信息
* w, h, 输出参数,图片的宽高信息
* 返回值: 0,成功
* -1,失败
* 备注信息: PNG 文件头数据信息如下所示:
*
* 文件头信息:8 字节
* IHDR 数据块的长度信息:4 字节
* IHDR 数据块类型码 :4 字节
* png 图片宽:4 字节
* png 图片高:4 字节
*/
#define PNG_WH_DATA_OFFSET 16
int getPngImgSize(const char* pathName, int* w, int* h)
{
FILE* fp = NULL;
int imgWidth= 0;
int imgHeight = 0;
if(NULL == pathName) return -1;
fp = fopen(pathName, "rb"); // 只读方式打开 (二进制方式)
if( NULL == fp )
{
return -1;
}
fseek(fp, PNG_WH_DATA_OFFSET, SEEK_SET);
fread(&imgWidth, sizeof(imgWidth), 1, fp);
fread(&imgHeight, sizeof(imgHeight), 1, fp);
fclose(fp);
if(w)
{
// 设置数据的高低位信息
*w = 0x00000000;
*w |= (imgWidth<<24)&0xff000000;
*w |= (imgWidth<< 8)&0x00ff0000;
*w |= (imgWidth>> 8)&0x0000ff00;
*w |= (imgWidth>>24)&0x000000ff;
}
if(h)
{
*h = 0x00000000;
*h |= (imgHeight<<24)&0xff000000;
*h |= (imgHeight<< 8)&0x00ff0000;
*h |= (imgHeight>> 8)&0x0000ff00;
*h |= (imgHeight>>24)&0x000000ff;
}
return 0;
}
int main(int argc, char** argv)
{
char chInput = 0;
int imgWidth = 0;
int imgHeght = 0;
printf("Read png imgae size \n");
getPngImgSize("003.png", &imgWidth, &imgHeght);
getPngImgSize("002.png", &imgWidth, &imgHeght);
getPngImgSize("001.png", &imgWidth, &imgHeght);
// test input
chInput = getchar();
return 0;
}
linux 读取png图片大小,读取 png 图片的宽高信息相关推荐
- jquery实现上传图片及图片大小验证、图片预览效果代码
jquery实现上传图片及图片大小验证.图片预览效果代码 jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 */ function submit_upload_picture() ...
- 批量处理图形大小如何更改图片大小尺寸修改图片视频教程ps学习ps教程ps基础新教程
批量处理图形大小如何更改图片大小尺寸修改图片视频教程ps学习ps教程ps基础新教程
- JAVA改变图片大小,将图片改为Jpg格式
JAVA改变图片大小,将图片改为Jpg格式 package util;import javax.imageio.ImageIO; import java.awt.*; import java.awt. ...
- 视频直播源码,插入图片、删除图片、设置图片大小、提取图片
视频直播源码,插入图片.删除图片.设置图片大小.提取图片 1.插入图片 Document对象有一个add_paragraph()方法插入图片,只需要传入路径或者字节流即可,实际上它也是调用段落的Run ...
- 图片大小自动按比例缩小图片不变形 解决方法
图片大小自动按比例缩小图片不变形 解决方法 参考文章: (1)图片大小自动按比例缩小图片不变形 解决方法 (2)https://www.cnblogs.com/liujunchen/p/7598649 ...
- python 快速读取图像宽高信息
python 快速读取图像宽高信息 1. 背景 2. 方法 2.1 仅读取图像文件头部信息 2.2 采用特定 python 包读取 1. 背景 存在100w张JPG图像,需要获取它们的宽高信息.如果用 ...
- XML文件转TXT,XML无图片宽高信息
XML文件转TXT,XML无图片宽高信息 网络上有很多xml转txt的文章,不过有的xml文件不包括size信息,即图片本身的宽高,如先前提到的湛江水下目标检测大赛数据集的label文件.因此在前辈的 ...
- python给指定目录所有图片添加水印logo,批量生成替换文件,自适应图片大小添加到图片正中间
首先需要安装PIL,pip install 2.x的版本安装 pip insall PIL 3.x的python版本安装 pip install pillow 实现功能步骤: 1.读取指定目录jpg或 ...
- css固定图片大小 vue_css3 实现图片等比例放大与缩小
css3 实现图片等比例放大与缩小 在工作中,经常会碰到图片缩放的情况,比如服务器端返回的图片大小,可能大小不同,有的大,有的小,服务器端返回的图片大小我们不能控制的,但是在我们设计稿的时候,可能会规 ...
最新文章
- 自己写的小程序 deb打包
- 生产者,消费者,CDN
- python基础学习(二)注释和算术运算符
- 笔记本能连上WIFI网络,但是无法上网怎么办
- PDFMate PDF Converter Pro
- 算术的c语言程序设计,C 程序设计:变量与算术表达式
- C#判断联网状态检查电脑联网状态
- 以太网口差分电平_高速串行总线设计基础(八)揭秘SERDES高速面纱之CML电平标准与预加重技术...
- Java 死锁及解决方法
- Agile敏捷开发Planning Poker简介
- Linux宝库名人轶事栏目 | 智能化之边缘计算浅析
- 多组测试数据01字典树「模板」
- 路由器连接路由器设置方法
- 优秀logo设计解析_优秀logo设计作品及寓意解析,国外精品logo设计图片分享
- 详解Android/IOS平台下抓包工具使用以及抓取API接口
- 如何利用工时表来帮助项目管理做得更完善?
- word2vec学习+使用介绍
- python selenium 获取frame中的元素
- 分析许嵩的175首歌曲,看看大家为什么那么喜欢听他的歌
- Java四种引用类型