stretchdibits

时间:2024-07-23 12:53:10编辑:优化君

用vc++读取bmp格式的图片并显示出来的程序代码

用CDIB类,图像设备无关类。这是里边载入bmp图片的函数,加了这个类后直接调用就行。网上有很多例子,去pudn吧,那里有很多
int CDIB::LoadBmp(LPCSTR filename)
{
//打开文件
CFile file(filename,CFile::modeRead|CFile::shareDenyNone);

WORD bfType;
DWORD
bfSize;

//读入文件头
file.Read(&bfType,sizeof(WORD));
file.Read(&bfSize,sizeof(DWORD));
if(bfSize <= 0)
{
file.Close();
return -1;
}

//是否Bmp文件
if (bfType != (((WORD)'M'<<8) + 'B'))
{
file.Close();
return -1;
}

DWORD
bfOffBits;
//找到位图数据起始偏移并读入
file.Seek(2*sizeof(WORD),CFile::current);
file.Read(&bfOffBits,sizeof(DWORD));

LPVOID DibBuf;

DibBuf = (LPVOID)new char[bfSize];

if(DibBuf == NULL)
{
file.Close();
return -1;
}

//读入位图数据
file.ReadHuge(DibBuf,bfSize);
file.Close();

LPBITMAPINFO pBMI;

int size = bfOffBits - 14;
pBMI = (LPBITMAPINFO)new char[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)];

//生成信息头
memcpy(pBMI,DibBuf,size);
LPVOID lpBits = (LPVOID)((LPSTR)DibBuf + size);

//创建位图
CreateDIBIndirect(pBMI, lpBits);

delete pBMI;
delete DibBuf;
return 1;
}


StretchDIBits显示内存中的数据问题

用StretchDIBits函数vac假设你的数据存储在下面两个结构中:BITMAPINFO bmiPBYTE      pbits在视图类的OnDraw函数中添加一句:::StretchDIBits(pDC-&gt;GetSafeHdc()iko &#92;                0 06 bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight, &#92;                0, 0, bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight,&#92;                pbits, bmi, DIB_RGB_COLORS, SRCCOPY );即可


VC保存了一张BMP图片,怎么提取其轮廓,让轮廓显示出来

BMP图像文件

?最早的BMP图像文件在Windows操作系统中Windows操作系统的一个标准图像文件格式是最简单的图像格式。

? BMP图像格式是非常简单的,只是最基本的图像数据存储功能,并且可以被存储为每个像素的一个4位,8位和24位的位图。虽然它提供的信息过于简单,但由于Windows系统的普及,BMP本身是一个简单的格式,标准,透明,BMP图像文件格式得到大力推广,这是一般的Windows系统上显示在屏幕以及一些简单的图像系统。

这种格式功能包含丰富的图像信息几乎没有压缩,但所产生的先天固有的缺点 - 占用磁盘空间过大。很少使用的网页。

? 24 800×600的BMP格式的图形文件的大小:
800×600×3byte 1440000byte≈1440byte≈1.44M

?二,GIF图像文件

? GIF格式,其特征在于由一个高压缩比,占用较少的磁盘空间,所以大量的在Web页中的图像。

? GIF有两个版本:

? GIF87A:单一的静止图像被简单地用来存储。
? GIF89a的几件静止图像,也可以存储,从而形成一个连续的动画成为支持2D动画格式。您可以指定透明区域,使图像有一个不寻常的GIF风光充分的显示。在互联网上,大量的彩色动画文件多为这种格式。像素艺术。 N多QQ秀,QQ空间,QQ的东西。
? GIF图像格式还增加褪色,换言之,在图像转印过程中,用户可以看到的图像的大致轮廓,然后继续进行的传输过程中的一部分,和看到图像的细节,和适应用户从朦胧清除的观看心理。



?八个存储的格式,因此它不能被存储在彩色图像中超过256个,总金额小于256色的颜色的图像的使用的限制。

?最好的屏幕显示GIF格式如下:

?如果量少,色,颜色小于256,调色板,可以选择“准确”。
?不要投票“失真”。
?在正常情况下,调色板中选择最合适的,最大的色彩数,来选择“256”。如果颜色是略超过256种颜色,抖动被设置为“100%”。
?为了防止锯齿状边缘不需要透明的,不透明的,尽可能多。
?一个小窍门:



?网页切片出口GIF格式,色彩丰富,不导出和导出。按钮,如下图所示:



?第三,JPEG图像文件

? JPEG文件的扩展名jpg或。 JPEG压缩技术是非常先进的,它采用有损压缩,去除冗余的图像和彩色数据,以获得很高的压缩比,而展览是非常丰富的,生动的图像,换句话说,用最少的磁盘空间,以获得更好的图像质量。

? JPEG 2000,JPEG组织负责制定,JPEG,和它具有较高的压缩比和更多新功能,新一代的静止图像压缩技术。
JPEG2000作为JPEG压缩率比JPEG高约30%的升级版。只能支持不同,JPEG,JPEG2000同时支持有损和无损压缩JPEG有损压缩。无损压缩保存一些重要图片是有用的。
? JPEG2000是一个非常重要的特点是,它可以实现渐进传输,GIF“变脸”有异曲同工之妙,第一次传输的图像的轮廓,然后逐步传输数据,不断提高图像质量,图像由朦胧到清楚显示。



此外,JPEG2000支持所谓的“区域利益”的功能,你可以指定你的面积?兴趣?压缩质量的图像的任何部分,也可以选择指定第一个解压缩。 ?

?注意JPG图像:图像质量和文件尺寸之间找到一个平衡点。一般,80%的压缩比是在Web页上更适合使用。


也可以保存为图像处理软件可以使用Windows附件使用图像处理软件进行转换。如:ACDSEE,PHOTOSHOP等软件。


~在C#中什么意思

按位取反

10 00 01 10

取反后为

01 11 10 01

-----------------华丽丽的补充答案分割线----------

看来得详细给你分析一下数字的机内表示和机内存储方式。
你最好把你那个a的具体值是多少、类型是什么说一下。

对于最常见的32位有符号整型数,机内长度应该为4个Byte32位,且最高位表示符号为,0为正,1为负,因此1230应该表示为:

0000 0000 0000 0000 0000 0100 1100 1110

方便起见一半用十六进制表示

0x00 00 04 CE

按位取反后成为:

1111 1111 1111 1111 1111 1011 0011 0001 : 0xFFFFFB31

并不是-1230,而是-2147482417

如果是uint_8,即无符号8位整型:

00 00 10 00 (8)

按位取反后成为:

11 11 01 11( 247 而不是-8)

总之这个操作要根据对象具体分析。如果是浮点数更复杂。


c#%是什么意思

面向对象就是所有的操作都是基于对象的,所关注的是对象,“我想知道TextBox里的内容”这个操作,直接找TextBox对象的text属性就可以了。敢问你对对象这个概念有怎样的理解,面向对象的重点是对象,而不是面向,如果你想知道“面向”这个词的字面意思,“面,脸,向,朝向“,脸朝向什么地方不就是关注的是什么地方,单纯的咬文嚼字没有意义。

//-------------------2009-03-18-21-59

面向对象中的面向即是c#中的操作是基于对象的,像是一个TextBox控件即是一个对象,我们要知道控件中的内容就由TextBox的属性text获得。
所谓的类即是类型,任何对象都有一个类型,像是张三这个对象他的类型是男人,李四这个对象她的类型是女人,类你可以理解为若干个同类对象的共有属性、方法等的集合。

以上是一些简单的理解,具体请参照面向对象的思想及类的概念。


如何用C++调用halcon函数?

下面是一个用C++调用halcon函数的实例,说明://后面的部分为程序的说明,在程序运行中是不起作用的。a) gen_image1_extern函数中的变量width,height必须为HTuple类型,Pointer指针为unsigned char类型,输入时转换为long型。b) width, height必须与Pointer指向的图像数据的长宽一致。c) Pointer指针在gen_image1_extern函数调用之前分配了内存,之后不要马上释放,否则会出错。应该在确保不再使用Image变量之后再释放。halcon内部会自动释放Image,感觉没有释放Pointer(还需要进一步验证)。d) 显示图像时,可能存在着图像的上下翻转,可以按照1中的方法,将图像数据翻转后再调用gen_image1_extern,或者使用halcon中的函数mirror_image()进行翻转。BITMAPINFO * RotateBmpInfo;BYTE * bitBuffer;bitBuffer = NULL;bitBuffer = new BYTE[sizeof(BITMAPINFO)];RotateBmpInfo = (BITMAPINFO *)bitBuffer;RotateBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);RotateBmpInfo->bmiHeader.biHeight = Height;RotateBmpInfo->bmiHeader.biWidth = Width;RotateBmpInfo->bmiHeader.biPlanes = 1;RotateBmpInfo->bmiHeader.biBitCount = 24;RotateBmpInfo->bmiHeader.biCompression = BI_RGB;RotateBmpInfo->bmiHeader.biSizeImage = Height * bytewidth;RotateBmpInfo->bmiHeader.biXPelsPerMeter= 0;RotateBmpInfo->bmiHeader.biYPelsPerMeter= 0;RotateBmpInfo->bmiHeader.biClrUsed = 0;RotateBmpInfo->bmiHeader.biClrImportant = 0;CWnd * m_pWnd ;m_pWnd = AfxGetApp()->GetMainWnd();CDC *pDC = m_pWnd->GetDC();::StretchDIBits(pDC->GetSafeHdc(),Width + 10,Height + 10,从VC++到Halconunsigned char *Pointer;int width, height;Pointer = new unsigned char[width * height];int i, j;for (i=0; i<height; i++){for (j=0; j<width; j++){Pointer[i*width+j] = j % 255;}}Hobject Image;gen_image1_extern(&Image, "byte", (HTuple)width, (HTuple)height, (long)Pointer, NULL);

8位图像和16位图像的区别

通常我们叫8位通道图象和16位通道图象.

8位通,每位通道以灰阶(从白到黑的过程)来计算就是256个像素点,也就是2048(8乘256)色.也就是说,图象总共可以显示2048个颜色.所以当你使用的是RGB的图象时,就是3乘8等于24位色图象.如果是CMYK模式就是4乘8等于32位色图象.

16通道,同样每位通道以灰阶256个像素点来计算,那就是4096色(16乘256)色.那这个图象就能显示4096个颜色.

储存方式没有任何不同,是RBG模式就是RGB模式.如果是CMYK模式就是CMYK模式.可能JPEG不支持16位通道的图像吧.

至于调色板也没有任何不同.因为调色也是按照模式来区分的,如果是RGB来区分,就是按红,绿,蓝来调色.如果是CMYK,就是按照品,青,黄,黑,来调色.


像素一个8位图像 8位代表什么意思?

位图,是由像素组成的图像,也叫像素图。
这个位,表示色彩深度又叫色彩位数,
多少位就表示,位图中要用多少个二进制位来表示每个像素点的颜色。

常用有1位(单色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增强色),24位和32位(真彩色)等其中的位数,表示,使用多少位二进制码表示一个像素材颜色。

8位,就表示,用8位二进制码表示一个像素颜色,可以表示最多256种颜色。


delphi 拿到了图像的缓冲数据myBuffer 怎么用SetDIBitsToDevice

SetDIBitsToDevice 函数功能:该函数使用DIB位图和颜色数据对与目标设备环境相关的设备上的指定矩形中的像素进行设置。对于Windows 98和Windows NT 5.0,函数SetDIBitsToDevice已经得到扩展,它允许JPEG图像作为源图像。 函数原型:int SetDIBitsToDevice(HDC hdc, int xDest, int Ydest, DWORD dwWidth, DWORD dwHeight, intXSrc, int Ysrc, UINT uStartScan, UINT cScanLines, CONST VOID *lpvBits, CONST BITMAPINFO *lpbmi, UINT fuColorUse); 参数: hdc:设备环境句柄。 XDest:指定目标矩形左上角的X轴坐标,按逻辑单位表示坐标。 YDest:指字目标矩形左上角的Y轴坐标,按逻辑单位表示坐标。 dwWidth:指定DIB的宽度,按逻辑单位表示宽度。 dwHeight:指定DIB的高度,按逻辑单位表示高度。 XSrc:指定DIB位图左下角的X轴坐标,按逻辑单位表示坐标。 YSrc:指定DIB位图左下角的Y轴坐标,按逻辑单位表示坐标。 uScanLines:指定DIB中的起始扫描线。 cScanLInes:指定参数lpvBits指向的数组中包含的DIB扫描线数目。 lpvBits:指向存储DIB颜色数据的字节类型数组的指针。关于更多的信息,请参考下面的备注一节。 lpbmi:指向BITMAPINFO结构的指针,该结构包含有关DIB的信息。 fuColorUse:指向BITMAPINFO结构中的成员bmiColors是否包含明确的RGB值或对调色板进行索引的值。有关更多的信息,请参考下面的备注部分。 参数fuColorUse必须是下列值之一,这些值的含义如下: DIB_PAL_COLORS:表示颜色表由16位的索引值数组组成,利用这些值可对当前选中的逻辑调色板进行索引。 DIB_RGB_COLORS:表示颜色表包含原义的RGB值。 返回值:如果函数执行成功,那么返回值是设置的扫描线数目;如果函数失败,那么返回值为0。


vb GetBitmapBits函数

'Module1:
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

Declare Sub FillMemory Lib "kernel32.dll" Alias "RtlFillMemory" (Destination As Any, ByVal Length As Long, ByVal Fill As Any)
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)
Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type

Public info As BITMAP, BytesPixel As Long

Function getBmp(hSrcBmp As Long) As Byte()
Dim tSBmpInfo As BITMAP ', tDBmpInfo As BITMAP
Dim sBits() As Byte
'获得位图信息
Call GetObject(hSrcBmp, Len(tSBmpInfo), tSBmpInfo)
ReDim sBits(1 To tSBmpInfo.bmWidthBytes, 1 To tSBmpInfo.bmHeight)
BytesPixel = tSBmpInfo.bmBitsPixel / 8
info = tSBmpInfo
Call GetBitmapBits(hSrcBmp, tSBmpInfo.bmWidthBytes * tSBmpInfo.bmHeight, sBits(1, 1))
getBmp = sBits
End Function

Function setBmp(hDesBmp As Long, data() As Byte)
Call SetBitmapBits(hDesBmp, (UBound(data, 2) - LBound(data, 2) + 1) * (UBound(data, 1) - LBound(data, 1) + 1), data(1, 1))
End Function








窗口

Private Sub Command1_Click()
Dim b() As Byte, fo As Long
b = getBmp(Picture1.Picture.Handle)

For fo = 1 To UBound(b, 2)
Print Hex(b(1, fo)) & " ";
Next

setBmp Picture1.Picture.Handle, b
Picture1.Refresh
End Sub

Private Sub Form_Load()
Picture1.Appearance = 0

End Sub


c++中GetBitmapBits(hbmp,382822,outBuffer)?

GetBitmapBits函数功能:该函数将指定位图的位拷贝到缓冲区里。

函数原型:LONG GetBitmapBits(HBITMAP hbmp, LONG cbBuffer, LPVOID lpvBits);

参数:

hbmp:指向感兴趣的位图的句柄。

cbBuffer:指定要从位图拷贝到缓冲区的字节数。

lpvBits:指向接收位图位数据的缓冲区指针。这些位是按字节类型存储在数组中的。

返回值:如果该函数执行成功,那么返回值就是拷贝到缓冲区的字节数;如果该函数执行失败,那么返回值为0。

文件头,信息头和调色板的参考信息可以查看以下地址:
http://blog.csdn.net/degree_37/archive/2008/07/25/2708459.aspx


图片格式jpG、GIF、PNG、BMP是什么意思?

亲亲您好,很高兴为您解答。1、BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。2、GIF的全称是Graphics Interchange Format,可译为图形交换格式,用于以超文本标志语言(Hypertext Markup Language)方式显示索引彩色图像,在因特网和其他在线服务系统上得到广泛应用。GIF是一种公用的图像文件格式标准,版权归Compu Serve公司所有。3、JPEG是常见的一种图像格式,它由联合图像专家组(Joint Photographic Experts Group)开发。JPEG文件的扩展名为.jpg或.jpeg,它用有损压缩方式去除冗余的图像和彩色数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,即可以用较少的磁盘空间得到较好的图片质量 。4、png:便携式网络图形是一种无损压缩的位图片形格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。希望我的回答能够帮助到您,祝您生活愉快~【摘要】
图片格式jpG、GIF、PNG、BMP是什么意思?【提问】
亲亲您好,很高兴为您解答。1、BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。2、GIF的全称是Graphics Interchange Format,可译为图形交换格式,用于以超文本标志语言(Hypertext Markup Language)方式显示索引彩色图像,在因特网和其他在线服务系统上得到广泛应用。GIF是一种公用的图像文件格式标准,版权归Compu Serve公司所有。3、JPEG是常见的一种图像格式,它由联合图像专家组(Joint Photographic Experts Group)开发。JPEG文件的扩展名为.jpg或.jpeg,它用有损压缩方式去除冗余的图像和彩色数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,即可以用较少的磁盘空间得到较好的图片质量 。4、png:便携式网络图形是一种无损压缩的位图片形格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。希望我的回答能够帮助到您,祝您生活愉快~【回答】
如果我的解答对您有所帮助,还请给个赞(在左下角进行评价哦),期待您的赞,您的举手之劳对我很重要,您的支持也是我进步的动力。如果觉得我的解答还满意,可以点我头像一对一咨询。最后再次祝您身体健康,心情愉快![鲜花][鲜花][鲜花]【回答】


什么是jpg,png,bmp格式?

jpg格式:即为jpeg格式,是通过压缩改变画质和文件尺寸的格式。2、png格式:png可以对图像进行无损压缩,并且压缩体积比jpg格式要小得多。3、bmp格式:Windows中使用的标准图像格式。【摘要】
什么是jpg,png,bmp格式?【提问】
jpg格式:即为jpeg格式,是通过压缩改变画质和文件尺寸的格式。2、png格式:png可以对图像进行无损压缩,并且压缩体积比jpg格式要小得多。3、bmp格式:Windows中使用的标准图像格式。【回答】
可不可以再具体的阐述一下呢?【提问】
JPEG是常见的一种图像格式,它由联合图像专家组(Joint Photographic Experts Group)开发。JPEG文件的扩展名为.jpg或.jpeg,它用有损压缩方式去除冗余的图像和彩色数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,即可以用较少的磁盘空间得到较好的图片质量 。【回答】
二,适用范围不同1、jpg格式:压缩后恶化的图像无法还原,使用于数字图像及Web中的照片中。2、png格式:支持透明效果可以为原图像定义256个透明层次,使得彩色图像的边缘能与任何背景平滑地融合,从而彻底地消除锯齿边缘。3、bmp格式:由于无法压缩,因此缺点是文件容量太大,使用于Windows壁纸等方面。【回答】
BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。【回答】
png:便携式网络图形是一种无损压缩的位图片形格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。【回答】


上一篇:金山游侠6

下一篇:商标电影