调整大小TIFF图像使用C#
问题描述:
我想改变我的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);
}
}
}
}
答
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
没有同时使用Graphics.FromImage(文件名)增加文件大小,之后也使用编码器参数。 –
你的新旧尺码是?输入是否也是TIFF格式,如果是这样,使用什么压缩? –