代码之家  ›  专栏  ›  技术社区  ›  RubbleFord

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

  •  3
  • RubbleFord  · 技术社区  · 15 年前

    我正在尝试调整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的透明度。

    有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Andrew Bullock    15 年前

    你需要设置像素格式时,你新的 Image thumbnail 至至少32bpp argb:

    new Bitmap(1500, 1500, PixelFormat.Format32bppPArgb)
    

    编辑:

    更好的是,从 source 所以你得到了完全相同的一个,只是意味着颠倒你的方向 using

        2
  •  1
  •   RubbleFord    14 年前

    事实上,我发现由于photoshop以tiff格式存储透明度的方式,最好是通过自动化photoshop创建png,然后处理生成的png。