使用(MFC)CImage :: SetPixel()更改像素的颜色

史蒂夫·阿

我有一个带有alpha(透明)层的32位png文件。我想使用MFC在每个像素的基础上更改某些像素的颜色性能不是问题(尽管越快越好)。

我编写了代码来CImage::GetPixel()调整返回的颜色COLORREFSetPixel()新颜色,但是整个图像是透明的。所以我写了下面的代码块,它简单地获取并设置了原始颜色。生成的图像是完全透明的。我还尝试过简单SetPixel(x, y, RGB(255, 0, 0))地将所有像素设置为红色。有什么建议可以解决这个问题?

CImage image;
if(image.Load(sFilename) == S_OK)
{
    TRACE(L"IsTransparencySupported %d", image.IsTransparencySupported()); // Returns 1.
    TRACE(L"IsDIBSection %d", image.IsDIBSection()); // Returns 1.
    TRACE(L"Size %dx%d", image.GetWidth(), image.GetHeight()); // Displays 141x165.
    TRACE(L"BPP %d", image.GetBPP()); // Returns 32.
    TRACE(L"Pitch %d", image.GetPitch()); // Returns -564.

    COLORREF color;
    for(int x = 0; x < image.GetWidth(); x++)
    {
        for(int y = 0; y < image.GetHeight(); y++)
        {
            color = image.GetPixel(x, y); 
            image.SetPixel(x, y, color);
        }
    }

    if(image.Save(sFilenameNew, Gdiplus::ImageFormatPNG) != S_OK)
        TRACE(L"Error saving %s.", sFilenameNew);
}
else
    TRACE(L"Error loading png %s.", sFilename);

谢谢!

Chan Xiang
CImage image;
for (int i=0;i<image.ImgHeight;i++)
{
    for (int j=0;j<image.ImgWidth;j++)
    {
        int index = i*image.ImgWidth+j;
        unsigned char* pucColor = reinterpret_cast<unsigned char *>      (image.GetPixelAddress(j , i)); 
        pucColor[0] = bValues[index];   
        pucColor[1] = gValues[index];   
        pucColor[2] = rValues[index];  
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

逐像素更改图像的颜色

来自分类Dev

更改Rmagick中的像素颜色

来自分类Dev

更改imageview的像素颜色

来自分类Dev

为什么在使用SetPixel时出现异常:具有索引像素格式的图像不支持SetPixel?

来自分类Dev

更改plt.imshow()图像的像素的颜色

来自分类Dev

更改MFC列表控件标题颜色

来自分类Dev

使用OpenCV更改像素的颜色

来自分类Dev

在MFC C ++中更改文本颜色?

来自分类Dev

setPixel的颜色

来自分类Dev

更改特定像素的颜色[棒]

来自分类Dev

使用CGPoint从图像获取像素颜色

来自分类Dev

使用Python在OpenCV中检查像素颜色

来自分类Dev

更改PIL中的像素颜色值

来自分类Dev

使用querySelector更改颜色

来自分类Dev

使用JQuery更改颜色

来自分类Dev

使用ImageMagick在特定位置更改像素颜色值

来自分类Dev

MFC:如何更改整个editBox的背景颜色?

来自分类Dev

更改点击像素的颜色

来自分类Dev

OpenCV:更改像素的颜色

来自分类Dev

无法更改MFC进度栏颜色

来自分类Dev

使用OpenCV更改像素的颜色

来自分类Dev

如何通过使用Magick.Net更改图像中每个像素的颜色

来自分类Dev

Tkinter:更改像素的颜色

来自分类Dev

setPixel的颜色

来自分类Dev

使用jQuery更改颜色

来自分类Dev

如何在Windows 10中使用WriteableBitmapEx提高更改图像像素颜色的性能?

来自分类Dev

使用querySelector更改颜色

来自分类Dev

使用getImageData从Canvas获取像素的颜色给出错误的颜色

来自分类Dev

如何使用 PIL 更改像素的颜色?