Изменить размер TIFF и сохранить прозрачность и C # - PullRequest
3 голосов
/ 30 июля 2010

Я пытаюсь изменить размер 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();
  //}
}

Изображение было создано с помощью фотошопа, и я не могу понять, почему оно не держит прозрачность на измененных размеров tiff.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 30 июля 2010

вам нужно установить формат пикселя при обновлении Image thumbnail до 32bpp argb:

new Bitmap(1500, 1500, PixelFormat.Format32bppPArgb)

Edit:

Еще лучше, возьмите его с source, чтобы вы получили точно такой же, просто означает реверсирование using s

1 голос
/ 20 мая 2011

Я действительно обнаружил, что из-за того, как прозрачность хранится в формате TIFF с Photoshop, было лучше создавать PNG, автоматизируя Photoshop, а затем обрабатывая полученный PNG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...