2011-02-24 95 views
1

我有一小段程式码旋转图像.NET rotateflip减小文件大小

Sub RotateImage(ByVal FilePath As String) 
    Dim img = System.Drawing.Image.FromFile(FilePath) 
    img.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone) 
    img.Save("c:\test.jpg", ImageFormat.Jpeg) 
    img.Dispose() 
End Sub 

出于某种原因,新的图像是758KB,而不是1.69 MB作为原始。

这是为什么,我该如何解决这个问题?

我不想压缩图像,只是旋转它。

除此之外,我比较了win explorer中的属性,它们看起来都是相同的,包括分辨率。那么究竟发生了什么?

+0

你确定原始图像是JPG吗? – 2011-02-24 22:56:33

+0

其扩展名是“.jpg”,它可以是别的吗?它直接来自相机。 – 2011-02-25 11:12:49

+0

对我有什么想法?任何人? – 2011-02-27 19:55:59

回答

2

可能因为图像被重新编码。我在文档中看不到任何内容,说RotateFlip应该是无损的。

与Google进行快速导览可让您尝试this article

+0

嗨,谢谢。我直到现在才回答,因为我想学习一些关于jpg和压缩的知识。我不太擅长的东西。你说旋转翻转不一定是无损压缩。但我可以不做任何压缩吗?我不想压缩在第一位。你链接到的代码,我已经尝试过,但给我错误。我现在再试一次,看看我能否联系作者。如果你有任何补充,请做:-)! – 2011-03-02 20:11:14

+0

@Yisman,JPEG图像被压缩,当你改变图像中的东西时,你需要重做压缩,至少对于编辑过的部分。对于90°旋转,您可以使用这种特殊的无损技巧,但如果您旋转图像并尝试压缩结果,则不会应用这种技巧。你需要使用魔术。如果你想删除压缩,保存为BMP或使用像PNG这样的无损压缩。这将增加文件大小。 – 2011-03-02 20:17:21

+0

谢谢!它的工作现在。它仍然会减少几kb的文件。你认为这是一个问题吗? – 2011-03-12 18:24:37