- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取 AtlImage
的字节缓冲区。类型是 CImage
此代码仅缩放从路径 szFilePath
加载的图像在这里:
int iNewWidth = 60;
int iNewHeight = 60;
CImage image;
image.Load(szFilePath);
CDC *screenDC = GetDC();
CDC *pMDC = new CDC;
pMDC->CreateCompatibleDC(screenDC);
CBitmap *pb = new CBitmap;
pb->CreateCompatibleBitmap(screenDC, iNewWidth, iNewHeight);
CBitmap *pob = pMDC->SelectObject(pb);
image.StretchBlt(pMDC->m_hDC, 0, 0, iNewWidth, iNewHeight, 0, 0, image.GetWidth(), image.GetHeight(), SRCCOPY);
pMDC->SelectObject(pob);
CImage new_image;
new_image.Attach((HBITMAP)(*pb));
int bytesnbr = abs(new_image.GetPitch()) * new_image.GetHeight();
mSize = bytesnbr;
mBuffer = new BYTE[bytesnbr];
DWORD dwValue = pob->GetBitmapBits(bytesnbr, mBuffer);
new_image.Detach();
ReleaseDC(screenDC);
我收到一个异常 isDibSection()
我想获取缓冲区以 base64 对其进行编码。也许还有其他方法......无论如何我需要缩放图像。感谢帮助
最佳答案
您不能使用 GetBitmapBits
在属于 DIB 部分的图像上。它仅适用于设备相关位图 (DDB)。据推测,MFC 使用一个断言将您从这个错误中拯救出来,该断言在内部验证 CImage
对象不是 DIB 部分。
你应该使用的是 GetDIBits
,这是您应该无论如何使用的,因为 GetBitmapBits
大约在 1990 年代中期随着 32 位 Windows 的引入而过时。
更一般地说,您的代码看起来像是由从 Java 翻译过来的人编写的。您不需要 new
所有这些对象。只需使用自动分配在堆栈上创建它们。
关于c++ - 从 CImage AtlImage 获取缓冲区数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499050/
我得到不完整的类型不允许使用 CImage 图像; 我用过这个: 出了什么问题?我以前从未叫过课。 using namespace std; class CImage; myfunction(hbit
我需要创建一个 CImage来自一个字节数组(实际上,它是一个 unsigned char 数组,但我可以强制转换为任何必要的形式)。字节数组的形式为“RGBRGBRGB...”。新图像需要包含图像字
我最近开始学习如何在 Visual Studio 中使用 MFC。我的程序使用了许多 32x32 像素的小图像,为方便起见,这些图像被放在一个大的 .png 中。我已经想出如何将大图像加载到 CIma
我目前正在尝试弄清楚如何在 CArchive (JPEG) 中正确存储 CImage 文件。我目前的做法是以下(伪)代码: BOOL CPicture::Serialize(CArchive &ar)
最近我看到一些人告诉其他人,如果他们需要转换,他们做错了什么。我在 C++ 中有这段代码 byte* pixel = (byte*)image->GetBits(); 这里我转换为 byte*,因为
我正在尝试复制一个 CImage 以便我可以对其像素进行一些操作。我试过这个,其中 source 是指向加载的 CImage 对象的指针。 CImage* dest = new CImage(*sou
请看下面的代码: // Create an empty bitmap BRGA CImage segImage; HDC hSeg = CreateCompatibleDC(NULL); Select
我正在显示来自相机的实时取景视频。我将每一帧下载到我必须分配的字节数组 (pImageData) 中。 现在,为了显示,我正在使用 CImage (MFC)。但是,我找到的所有样本都是基于使用 Glo
我想知道如何做这样的事情 CBitmap bmp; CImage img; /// bmp=img; //use bmp here 在我的程序中,有时我必须使用 CBitmap,但从一开始我就只使
我的问题基本上是,如何旋转 Windows ATL::CImage 对象? 我已经使用 Windows ATL CImage 对象加载了 JPG 图像,例如: CImage myImage; myIm
我有 Windows 8 和 Micosoft Visual Studio 2010 Express。 我正在做一个项目,我需要通过客户端和服务器传输图片。我搜索了一下,发现 CImage 类很有用。
我正在尝试获取 AtlImage 的字节缓冲区。类型是 CImage此代码仅缩放从路径 szFilePath 加载的图像在这里: int iNewWidth = 60; int iNewHeight
我刚开始在我的 MFC 项目中使用 ATL::CImage,这是一个非常基本的问题。我知道 ATL::CImage 成员支持用于控制透明度的 AlphaBlend() 和用于旋转的 plgblt()。
我们有一个要求,即用户可以将任何标准图像加载到对话框中,显示图像,并将图像以特定格式 (JPG) 保存在数据库中。似乎 CImage 是要使用的类,因为它可以加载和保存 BMP/GIF/JPG/PNG
我不使用 C++ 或 MFC/ATL 等,所以假设我什么都不知道。 整个画面是我需要接受一个带有透明层的 PNG 并将其写成具有指定压缩率的 JPEG 以传递给另一个系统。 我想知道的是,我如何用纯白
请问CImage如果它尝试加载另一个图像并且加载方法失败,则它的像素会被更改? 最佳答案 没有记录异常保证,因此您不能假设任何事情。 查看 CImage::Load (atlimage.h) 的源代码
如何使用 CImage 从 BYTE* 数组加载图像?到目前为止,我的解决方法是简单地创建一个临时文件,但这种操作有时非常昂贵......可能有相应的库,但我不想链接到其他库,我所需要的只是获取图像大
我在将 Alpha 图像打印到打印机设备上下文(真实或 XPS 文档编写器)时遇到问题。它们在屏幕上下文和打印预览中工作得很好,但是当我打印到文件或打印机时,当它们位于另一个图像的顶部时,它们显示为黑
我正在开发一个应用程序,其中我将 .png 图像存储到数据库(使用 SQLite3),现在根据我的要求,我希望图像与 ListCtrl 项目一起显示,那又怎样我需要的是根据从数据库中检索到的 blob
我的问题是:如果我直接在之前从 .PNG 文件加载的 CImage 上绘制一些文本。文本本身是透明的(您可以通过它看到背景颜色)并且无法使其具有所需的颜色。 CImage image; image.L
我是一名优秀的程序员,十分优秀!