微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将透明png图像转换为位图时,其不保留透明性吗?

如何解决将透明png图像转换为位图时,其不保留透明性吗?

| 我希望有人可以帮助我解决这个问题。我目前正在使用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,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,1,map,MagickCore::CharPixel,(void *)ptr);
            ptr += bitmapData->Stride;
        }

        bitmap->UnlockBits(bitmapData);
        return bitmap;
    }
任何人都可以帮助破译c ++代码或为我指出正确的方向。任何信息都会有很大的帮助。 非常感谢。     

解决方法

位图不支持透明度。通常,您可以采用其他方法。您有一个BMP选择一种颜色,该颜色表示透明,当转换为支持透明的格式时,该颜色变为透明。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。