C++实现读取图片的长度和宽度
感觉比较有用,这里记录一下:
文件如下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++实现读取图片的长度和宽度相关推荐
- 怎么设置ppt页面的长度和宽度_在PPT中将照片变裸眼3D效果怎样操作?分享技巧,帮你快速实现...
PPT的使用相信大家都不陌生,使用最多的就是制作PPT对工作进行汇报,对新项目进行展开讨论.其实在PPT中还可以设计海报,制作高逼格封面以及将照片变为3D效果等偏设计类的操作.今天将以如何把照片变为3 ...
- CNN 卷积神经网络(卷积、池化)长度、宽度、深度计算
卷积神经网络说白了就是拿一堆小的矩阵去点乘(注意我说的是点乘,不是矩阵乘,这个很重要)一个大矩阵,最后得到局部信息.看图(来源于网络,只做说明用): 给出一个matlab求解代码: A1 = [0 0 ...
- java读取图片缩略方法_java 图片缩略图的两种方法
最近网上看到两种不同的java图片缩略图的绘制方案 第一种,使用Graphics().drawImage按照一定的比例重新绘制图像. Java代码 package com.image.suoluetu ...
- canvas读取图片,输入文字,调整文字属性,拖拽文字位置,并保存图片
不是专门做前端的,代码写的不太好,权当抛砖引玉. 整体思路: 共有5层,除了背景颜色的div没什么用之外,canvas1用来读取图片作为背景,canvas2把文字展示出来,并记录拖拽文字的位置,can ...
- 【tensorflow 读取图片方式】本地文件名读取以及url方式读取
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 图片存在形式,一般 ...
- nodejs读取图片像素
把一张图片裁剪得左右空白部分对称,图片背景为白色.这件事情说来也简单,读取图片的像素,分别检测左右空白部分的宽度,然后裁剪到一样即可 . 接下来就涉及到读取图片像素的问题了,发现了一个好用的工具get ...
- python读取图片文件显示_Python—图像基本操作以及图像格式转换
关于图像处理的模块常用的有 PIL,openCV等,不过应为要处理 tif 格式的图片,故特来写下这篇博客. 关于安装模块 libtiff 直接pip install libtiff 安装模块,发现无 ...
- python读取图片的几种方式以及图像宽和高的存储顺序
1.opencv 2.imageio 3.matplotlib 4.scipy # coding:utf-8import cv2 import imageio from scipy import mi ...
- css设置div背景图片大小,适应宽度
问题: 没有通过css设置背景图片大小时候,背景图按照真实图片大小展示,会出现超出或者过小情况,如下是图片width:1920px 超出页面设计的1320px,效果如下 真实图片是这样的 解决方法 通 ...
- C语言实现往MySQL插入和读取图片
C语言实现往MySQL插入和读取图片 MySQL版本:5.7.32 客户端(node server):192.168.200.152 MySQL服务端:192.168.200.129:Port:330 ...
最新文章
- 文件上传漏洞及解决办法
- 2017-6-3 jQuery 事件 DOM操作
- C#上位机软件串口数据接收用Invoke(同步)和BeginInvoke(异步)的区别
- linux find -size参数,Linux find 常用命令
- Github标星3w+,热榜第一,如何用Python实现所有算法
- 关于阿里基础设施,你要知道的都在这里
- C语言实现与功能的程序,用C语言实现Ping程序功能
- C/C++遍历进程和进程ID的小工具
- JavaScript cookie js cookie设置
- SoapUI 入门指南
- 【Datawhale】[task2]2.3代码示例
- 微信公共号开发简单入门
- QIP.ru即时通讯服务3300万明文密码被泄
- php实现星座查询,php-十二星座查询系统(原创)
- 欧几里得 拓展欧几里得算法 讲解 (Euclid Extend- Euclid Algorithm)
- 联想Y450 MAC系统SD读卡器驱动
- 奉主耶稣基督的名,斥责一切魔鬼撒旦黑暗势力对我的捆绑,斥责一切邪灵对我的束缚,仇敌必然逃跑
- R语言怎么写积分_R语言入门的基本操作(1)
- 缺少lib库文件解决方法
- [汉语]类书、叙词表、分类词典、同义词、反义词词典...
热门文章
- java设置手指点击_java设置鼠标在jpanel时变为手指形状
- 蓝桥杯2016年七届C/C++省赛C组第一题-报纸页数
- IDEA 使用和问题总结
- Flutter进阶第5篇: 使用WebView组件flutter_inappbrowser加载远程web页面渲染新闻详情数据
- 软件设计精要与模式(第2版)
- 概率图模型之EM算法
- Python 的解释器
- java中的IO流之文件复制
- 查找目录下的所有文件中是否含有某个字符串
- Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.