0
我希望有人能帮助我解决这个问题。我目前使用ImageMagick.NET包装将透明png图像转换为位图(我们正在这样做,因为我们需要C++ imageMagick附带的附加图像处理功能)。现在,除了当我使用透明的图像时,一切都很好。当我进行转换时,透明区域会变成黑色。现在这里是我的问题,正在做转换的代码是用C++编写的,发现很难弄清楚它在做什么。请参阅下面的代码:当一个透明PNG图像转化为位图时,它不保留透明度?
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?它不支持透明度,但另一方面:TGA确实(与BMP格式几乎相同)。 – Rookie 2011-04-15 11:26:03