2017-07-31 141 views
0

我想改變我的TIFF文件的分辨率提高了文件的大小,它是使用下面的代碼修改成功,但它是繪製調整大小TIFF圖像使用C#

後增加從74KB到828KB我的輸出文件大小代碼中使用:

public void Resize(string imageFile, string outputFile, int width,int height) 
    { 
     using (var srcImage = Image.FromFile(imageFile)) 
     { 
      var newWidth = (int)(width); 
      var newHeight = (int)(height); 

      using (var newImage = new Bitmap(newWidth, newHeight)) 
      { 
       using (var graphics = Graphics.FromImage(newImage)) 
       {   
        graphics.SmoothingMode = SmoothingMode.AntiAlias; 

        graphics.InterpolationMode = InterpolationMode.NearestNeighbor; 
        graphics.PixelOffsetMode = PixelOffsetMode.None; 

        graphics.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight)); 

        newImage.Save(outputFile,ImageFormat.Tiff); 
       } 
      } 
     } 
    } 

回答

0

TIFF文件格式爲無損格式,所以減少你需要使用壓縮,如LZW大小。

因此,您需要在保存文件時包含這些詳細信息。

ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/tiff"); 

System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Compression; 
EncoderParameters myEncoderParameters = new EncoderParameters(1); 

EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionLZW); 
myEncoderParameters.Param[0] = myEncoderParameter; 

和輔助函數來獲取編碼器

private static ImageCodecInfo GetEncoderInfo(String mimeType) 
{ 
    int j; 
    ImageCodecInfo[] encoders; 
    encoders = ImageCodecInfo.GetImageEncoders(); 
    for (j = 0; j < encoders.Length; ++j) 
    { 
     if (encoders[j].MimeType == mimeType) 
      return encoders[j]; 
    } 
    return null; 
} 

的完整代碼和更多的細節可以在這裏找到:https://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoder.compression(v=vs.110).aspx

+0

沒有同時使用Graphics.FromImage(文件名)增加文件大小,之後也使用編碼器參數。 –

+0

你的新舊尺碼是?輸入是否也是TIFF格式,如果是這樣,使用什麼壓縮? –