我正在尝试调整 RGB 8 位 Tif 的大小并在 c# 中保持它的透明度。我试过下面的代码。

using (Image thumbnail = new Bitmap(1500, 1500))
{
  using (Bitmap source = new Bitmap(@"c:\trans.tif"))
  {
    using (Graphics g = Graphics.FromImage(thumbnail))
    {
      g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
      g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
      g.Clear(Color.Transparent);
      g.DrawImage(source, 0, 0, 1500, 1500);

    }
  }
  thumbnail.Save(@"c:\testoutput.tif", ImageFormat.Tiff);
  //using (MemoryStream ms = new MemoryStream())
  //{
  //    //thumbnail.Save(ms, ImageFormat.Tiff);
  //    //
  //    //result = ms.ToArray();
  //}
}

该图像是使用 photoshop 创建的,我不明白为什么它在调整大小的 tiff 上没有保持透明度。

有任何想法吗?

最佳答案

当您将 Image thumbnail 设置为至少 32bpp argb 时,您需要将 pixelformat 设置为:

new Bitmap(1500, 1500, PixelFormat.Format32bppPArgb)

编辑:

更好的是,从 source 中获取它,这样你就得到了完全相同的,只是意味着反转你的 using s

关于c# - 调整 tiff 大小并保持透明度和 C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3372326/

10-10 15:18