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