当将透明png图像转换为位图时,它不会保留透明度
When convering a transparent png image to bitmap its not retaining the transparency?
我希望有人能帮我解决这个问题。我目前正在使用ImageMagick。NET包装器将透明png图像转换为位图(我们这样做是因为我们需要c++ imageMagick附带的附加图像处理功能)。现在一切都很好,除了当我使用一个有透明度的图像。当我进行转换时,透明区域会变成黑色。现在我的问题是做转换的代码是在c++中,很难弄清楚它在做什么。请参阅下面的代码:
System::Drawing::Bitmap^ Image::ToBitmap()
{
System::Drawing::Bitmap^ bitmap =
gcnew System::Drawing::Bitmap(image->columns(), image->rows(),
System::Drawing::Imaging::PixelFormat::Format24bppRgb);
System::Drawing::Imaging::BitmapData^ bitmapData = bitmap->LockBits(
System::Drawing::Rectangle(0,0,image->columns(), image->rows()),
System::Drawing::Imaging::ImageLockMode::ReadWrite,
System::Drawing::Imaging::PixelFormat::Format24bppRgb);
unsigned char *ptr = (unsigned char *) bitmapData->Scan0.ToPointer();
std::string map = "BGR";
for( int i=0; i<image->rows(); i++ )
{
image->write(
0, i, image->columns(), 1, map,
MagickCore::CharPixel, (void *)ptr);
ptr += bitmapData->Stride;
}
bitmap->UnlockBits(bitmapData);
return bitmap;
}
有谁能帮我破译c++代码或者给我指个方向吗?任何信息都会有很大的帮助。
许多谢谢。位图不支持透明度。一般情况下,你可以反过来做。你有一个BMP选择一个表示透明的颜色,当转换为支持透明的格式时,该颜色被设置为透明。
相关文章:
- 有根的二进制搜索树.保留与其父级的链接
- 为多个会话保留XPtr
- 保留对其他类的成员函数的引用
- 指针保留字符串
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 如何让 GCC/Clang 在保留标识符上出错
- 必须为 C++20 协程帧保留多少内存?
- 如何将一个窗口保留在另一个应用程序窗口的前面
- 使用 char 分隔符解析C++中的字符串,但将可重复的字符保留为每个解析的子字符串 (C++ STL) 中的分隔符
- 局部变量保留函数中的值
- 保留函数指针模板参数
- 变量超出范围后如何保留向量值?
- C++矢量复制构造函数和赋值运算符是否也复制保留空间?
- 当为可变性配置时,boost::heap::d_ary_heap 保留的额外 std::list 的目的是什么?
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- 即使在使用 delete[] 后仍保留的元素
- 如何在成为指向基类的指针后保留对子类方法的使用?
- 将成员函数保留为未定义
- 旋转CImage并保留其alpha/透明度通道
- 当将透明png图像转换为位图时,它不会保留透明度