CImage 获取图片RGB 、图片高和宽;

1 CImage img , img1 ,imDest;
2 img1.Load( 图片路径);
3 img.Load( 图片路径);
4 为了防止图片失真,先处理一下在把图片显示出来
5 SetStretchBltMode(pDC->m_hDC , HALFTONE);
6 SetBrushOrgEx( pDC->m_hDC , 0, 0, NULL);//第一个参数用什么dc画图就是它的m_hDC;比如\
7
8 *********************************************************************
9
10 imDest.Create( pDoc->m_wdOrigWeigh , pDoc->m_wdOrigHeih , 32 , 0 );
11 SetStretchBltMode(imDest.GetDC(), HALFTONE);//因为要用imDest来获取imDest.GetPixel();所以就填imDest.GetDC();
12 SetBrushOrgEx(imDest.GetDC(), 0, 0, NULL);
13 img1.StretchBlt(imDest.GetDC(), 0 , 0 , pDoc->m_wdOrigWeigh , pDoc->m_wdOrigHeih , 0 , 0 , nptWith , nPtHeig ,SRCCOPY );
14 ************************************************************************
15 img.Draw( pDC->GetSafeHdc() ,rt1.TopLeft().x , rt1.TopLeft().y , rt1.Width() , rt1.Height() , 0 , 0 , rt1.Width() ,rt1.Height() );
16
17 2.在内存里获取图片的RGB
18
19 GetRGB( CMapDefineView *pDefinedview ,CImage &img , int nPitWide , int nPitHeigh )//注意这里CImage &img传递的是引用,而不是对象,否则会弹出m_hDC== 0的警告
20
21 {
22 int nPtHeig = img1.GetWidth();
23 int nptWith = img1.GetHeight();
24
25 imDest.Create( pDoc->m_wdOrigWeigh , pDoc->m_wdOrigHeih , 32 , 0 );//首先要创建一个CImage,规定了图片的大小。 HDC hdc = imDest.GetDC();//下面要用共同获取的hdc,如果每个都直接用imDest.GetDC()的话就要释放一下DC,imDest.ReleaseDC();
SetStretchBltMode(hdc, HALFTONE );//因为要用imDest来获取imDest.GetPixel();所以就填imDest获取的HDC ,为了防止创建的CImage里面图片失真,
SetBrushOrgEx(hdc, 0, 0, NULL);;//为了防止创建的CImage里面图片失真,
imgGetRGB.StretchBlt(hdc, 0 , 0 , pDoc->m_wdOrigWeigh , pDoc->m_wdOrigHeih , 0 , 0 , nptWith , nPtHeig ,SRCCOPY );//把加载的图片按照大小贴进新创建的imDest中。其中 nptWith , nPtHeig 是图片原来的宽度和高度,pDoc->m_wdOrigWeigh , pDoc->m_wdOrigHeih 是目的高度和宽度;
29
30
31 COLORREF colr;
32 int nlen = 0;
33 BYTE *Rbuf = new BYTE[ nPtHeig * nptWith ];
34 BYTE *Gbuf = new BYTE[ nPtHeig * nptWith ];
35 BYTE *Bbuf = new BYTE[ nPtHeig * nptWith ];
36 for (int i = 0 ; i <pDoc->m_wdOrigHeigh; i ++)//注意是nPtHeig 而不是nptWith ,因为这里是一行一行的获取图片RGB
37
38 {
39
40
41
42 for ( int j = 0; j < pDoc->m_wdOrigWeigh; i ++ )
43
44
45
46 {
47 colr = imDest.GetPixel( j , i );//注意j 和i 不能交换;
48 Rbuf[ nlen ] = GetRValue( colr )
49 Gbuf[ nlen ] = GetGValue( colr )
50 Bbuf[ nlen ] = GetBValue( colr )
51 nlen ++ ;
52 }
53 }
54 }

CImage 获取图片RGB 、图片高和宽;的更多相关文章
- iOS学习-压缩图片(改变图片的宽高)
压缩图片,图片的大小与我们期望的宽高不一致时,我们可以将其处理为我们想要的宽高. 传入想要修改的图片,以及新的尺寸 -(UIImage*)imageWithImage:(UIImage*)image ...
- php获取图片RGB颜色值的例子
php获取图片RGB颜色值的例子 很多图片站点都会根据用户上传的图片检索出图片的主要颜色值,然后在通过颜色搜索相关的图片. 之前按照网上的方法将图片缩放(或者马赛克)然后遍历每个像素点,然后统计处RG ...
- 27.openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽
openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽 from openpyxl import Workbook,load_workbook from openpyxl.dra ...
- 手机端上传未知图片大小,js设置宽高比例
<style rel="stylesheet" type="text/css"> .lunboimg{ width: 100%; height: a ...
- IOS: 使用imageIO获取和修改图片的exif信息
使用imageIO获取和修改图片的exif信息 一幅图片除了包含我们能看见的像素信息,背后还包含了拍摄时间,光圈大小,曝光等信息.UIImage类将这些细节信息都隐藏了起来,只提供我们关心的图片尺寸, ...
- C#放缩、截取、合并图片并生成高质量新图的类
原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...
- iOS检测用户截屏并获取所截图片
iOS检测用户截屏并获取所截图片 微信可以检测到用户截屏行为(Home + Power),并在稍后点击附加功能按钮时询问用户是否要发送刚才截屏的图片,这个用户体验非常好.在iOS7之前, 如果用户截屏 ...
- js获取页面中图片的总数
查看效果:http://keleyi.com/keleyi/phtml/image/9.htm 下面是完整代码: <html><body><div id="ke ...
- php获取网页中图片并保存到本地
php获取网页中图片并保存到本地的代码,将网页中图片保存本地文件夹: save_img("http://www.jbxue.com" ?>
随机推荐
- 剑指offer--面试题5
到现在为止,看过的书+代码有一定量了,并且也参加了个比赛,给自己的总体感觉:编程需要的是灵活的头脑,书里的东西只是讲个规则.思想,其实际实现可以千差万别! 潜在的规则+灵活的思维 = 程序! 在做 ...
- CSS学习------之简单图片切换
最近一直在重温纯CSS,学习的时候真的才发现,css真的博大精深啊! 所以趁着学习的劲头,谢了个最简单的CSS图片切换! 先整理下思路: 首先我希望图片居中间,两边有个切换按钮,点击按钮的时候,可以实 ...
- Java基于Socket文件传输示例(转)
最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解.在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加 ...
- Unity3D 游戏开发构架篇 ——角色类的设计与持久化
在游戏开发中,游戏角色占了很大的篇幅,可以说游戏中所有的内容都是由主角所带动.这里就介绍一下角色类的设计和持久化. 一.角色类应用场景和设计思想 游戏中的角色类型不一而足,有不同的技能,有不同的属性等 ...
- Memcache安全配置
Memcache安全配置 瞌睡龙 · 2014/01/20 17:59 0x00 Memcache简介 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash ...
- oracle 表空间 用户
Oracle创建表空间.创建用户以及授权.查看权限 创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'C:\oracle\product\ ...
- Interface Comparator
int compare(T o1, T o2) Compares its two arguments for order. Returns a negative integer, zero, or a ...
- hdu 1709 The Balance
母函数的特殊情况,左右两边都可以放,如样例1,2,9 母函数为(1+x+1/x)*(1+x^2+1/x^2)*(1+x^9+1/x^9) 化简为(1+x+x^2)*(1+x^2+x^4)*(1+x^9 ...
- 深入浅出Java并发包—锁(Lock)VS同步(synchronized)
今天我们来探讨一下Java中的锁机制.前面我们提到,在JDK1.5之前只能通过synchronized关键字来实现同步,这个前面我们已经提到是属于独占锁,性能并不高,因此JDK1.5之后开始借助JNI ...
- uCos的多任务实现
uCos的多任务实现 作为操作系统(OS),最基本的一项服务就是提供多线程,在实时操作系统uCos里,多线程被称为多任务(Task).多任务并不是CPU能真正同时运行多个程序,实际是靠CPU在多个任务 ...