调整tiff大小并保持透明度和c#

3

我正在尝试在C#中调整RGB 8位Tif的大小并保持其透明度。我尝试了以下代码。

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文件上无法保持透明度。

你有什么建议吗?


你为什么要特别调用 g.Clear(Color.Transparent); - Josh Stodola
你已经在这里待了足够长的时间,应该通过格式化你的代码示例来展现对人们的尊重,以提高可读性。 - Oded
2个回答

4

当您新建一个图像缩略图时,需要设置像素格式至少为32bpp argb:

new Bitmap(1500, 1500, PixelFormat.Format32bppPArgb)

编辑:

更好的方法是从源代码中获取它,这意味着您将拥有完全相同的东西,只需反转您的using语句即可。


1

我发现由于透明度在Photoshop中以TIFF格式存储的方式,通过自动化Photoshop创建PNG文件,然后压缩生成的PNG文件会更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接