感觉比较有用,这里记录一下:

文件如下info.cpp文件

#include <iostream>
#include <fstream>
#include <string>using namespace std;class CImage
{
private:long  m_Width;long  m_Height;int get_extension(string fname);
public:CImage(){m_Width = 0;m_Height = 0;};void LoadImage(char* fname);long get_width(){return m_Width;};long get_height(){return m_Height;};  };int  CImage::get_extension(string fname)
{    char c = fname.at(fname.length()-1);char c2 = fname.at(fname.length()-3);if ((c == 'f') && (c2 == 'g')){  // file extension name is gif return 1;}else if ((c == 'g') && (c2 == 'j')){ // file extension name is jpgreturn 2;}else if ((c == 'g') && (c2 == 'p')){ // file extension name is pngreturn 3;}else if ((c == 'p') && (c2 == 'b')){ // file extension name is bmpreturn 4;}return 0;
}void  CImage::LoadImage(char *fname)
{    m_Width = m_Height = 0;ifstream ffin(fname, std::ios::binary);if (!ffin){cout<<"Can not open this file."<<endl;return;}  int result = get_extension(fname);char s1[2] = {0}, s2[2] = {0};switch(result){case 1:  // gif  ffin.seekg(6);     ffin.read(s1, 2);ffin.read(s2, 2);    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  break;case 2:  // jpgffin.seekg(164);    ffin.read(s1, 2);ffin.read(s2, 2);    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  break;case 3:   // pngffin.seekg(17);    ffin.read(s1, 2);ffin.seekg(2, std::ios::cur);ffin.read(s2, 2);   m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  break;case 4:   // bmp    ffin.seekg(18);    ffin.read(s1, 2);ffin.seekg(2, std::ios::cur);ffin.read(s2, 2);    m_Width = (unsigned int)(s1[1])<<8|(unsigned int)(s1[0]);m_Height = (unsigned int)(s2[1])<<8|(unsigned int)(s2[0]);  break;default:cout<<"NO"<<endl;break;}  ffin.close();
};int main(int argc, char *argv[])
{if (argc < 2){printf("usage: program imagefilename/n");return 0;} CImage test;test.LoadImage(argv[1]);cout<<"width:"<<test.get_width()<<endl;cout<<"height:"<<test.get_height()<<endl;return 0;
}

编译成可执行文件:

 g++ info.cpp -o info

执行效果如下:

C++实现读取图片的长度和宽度相关推荐

  1. 怎么设置ppt页面的长度和宽度_在PPT中将照片变裸眼3D效果怎样操作?分享技巧,帮你快速实现...

    PPT的使用相信大家都不陌生,使用最多的就是制作PPT对工作进行汇报,对新项目进行展开讨论.其实在PPT中还可以设计海报,制作高逼格封面以及将照片变为3D效果等偏设计类的操作.今天将以如何把照片变为3 ...

  2. CNN 卷积神经网络(卷积、池化)长度、宽度、深度计算

    卷积神经网络说白了就是拿一堆小的矩阵去点乘(注意我说的是点乘,不是矩阵乘,这个很重要)一个大矩阵,最后得到局部信息.看图(来源于网络,只做说明用): 给出一个matlab求解代码: A1 = [0 0 ...

  3. java读取图片缩略方法_java 图片缩略图的两种方法

    最近网上看到两种不同的java图片缩略图的绘制方案 第一种,使用Graphics().drawImage按照一定的比例重新绘制图像. Java代码 package com.image.suoluetu ...

  4. canvas读取图片,输入文字,调整文字属性,拖拽文字位置,并保存图片

    不是专门做前端的,代码写的不太好,权当抛砖引玉. 整体思路: 共有5层,除了背景颜色的div没什么用之外,canvas1用来读取图片作为背景,canvas2把文字展示出来,并记录拖拽文字的位置,can ...

  5. 【tensorflow 读取图片方式】本地文件名读取以及url方式读取

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 图片存在形式,一般 ...

  6. nodejs读取图片像素

    把一张图片裁剪得左右空白部分对称,图片背景为白色.这件事情说来也简单,读取图片的像素,分别检测左右空白部分的宽度,然后裁剪到一样即可 . 接下来就涉及到读取图片像素的问题了,发现了一个好用的工具get ...

  7. python读取图片文件显示_Python—图像基本操作以及图像格式转换

    关于图像处理的模块常用的有 PIL,openCV等,不过应为要处理 tif 格式的图片,故特来写下这篇博客. 关于安装模块 libtiff 直接pip install libtiff 安装模块,发现无 ...

  8. python读取图片的几种方式以及图像宽和高的存储顺序

    1.opencv 2.imageio 3.matplotlib 4.scipy # coding:utf-8import cv2 import imageio from scipy import mi ...

  9. css设置div背景图片大小,适应宽度

    问题: 没有通过css设置背景图片大小时候,背景图按照真实图片大小展示,会出现超出或者过小情况,如下是图片width:1920px 超出页面设计的1320px,效果如下 真实图片是这样的 解决方法 通 ...

  10. C语言实现往MySQL插入和读取图片

    C语言实现往MySQL插入和读取图片 MySQL版本:5.7.32 客户端(node server):192.168.200.152 MySQL服务端:192.168.200.129:Port:330 ...

最新文章

  1. 文件上传漏洞及解决办法
  2. 2017-6-3 jQuery 事件 DOM操作
  3. C#上位机软件串口数据接收用Invoke(同步)和BeginInvoke(异步)的区别
  4. linux find -size参数,Linux find 常用命令
  5. Github标星3w+,热榜第一,如何用Python实现所有算法
  6. 关于阿里基础设施,你要知道的都在这里
  7. C语言实现与功能的程序,用C语言实现Ping程序功能
  8. C/C++遍历进程和进程ID的小工具
  9. JavaScript cookie js cookie设置
  10. SoapUI 入门指南
  11. 【Datawhale】[task2]2.3代码示例
  12. 微信公共号开发简单入门
  13. QIP.ru即时通讯服务3300万明文密码被泄
  14. php实现星座查询,php-十二星座查询系统(原创)
  15. 欧几里得  拓展欧几里得算法 讲解 (Euclid Extend- Euclid Algorithm)
  16. 联想Y450 MAC系统SD读卡器驱动
  17. 奉主耶稣基督的名,斥责一切魔鬼撒旦黑暗势力对我的捆绑,斥责一切邪灵对我的束缚,仇敌必然逃跑
  18. R语言怎么写积分_R语言入门的基本操作(1)
  19. 缺少lib库文件解决方法
  20. [汉语]类书、叙词表、分类词典、同义词、反义词词典...

热门文章

  1. java设置手指点击_java设置鼠标在jpanel时变为手指形状
  2. 蓝桥杯2016年七届C/C++省赛C组第一题-报纸页数
  3. IDEA 使用和问题总结
  4. Flutter进阶第5篇: 使用WebView组件flutter_inappbrowser加载远程web页面渲染新闻详情数据
  5. 软件设计精要与模式(第2版)
  6. 概率图模型之EM算法
  7. Python 的解释器
  8. java中的IO流之文件复制
  9. 查找目录下的所有文件中是否含有某个字符串
  10. Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.