2016-07-26 27 views
2

在我的代碼中,我打開一個位圖圖像,並簡單地重新保存它。它應該保持相同的質量和性能。但是結果是圖像尺寸發生了變化,儘管分辨率保持不變,而且視覺上沒有變化。如何打開圖像並保存圖像,而不作任何更改? 我的代碼:打開一個圖像,並用相同的參數重新保存它,c#

  Bitmap img = (Bitmap)Image.FromFile(path, true); 
      img.Save(path); 

今後應該改變圖像的透明度只,但現在它只是打開並保存它。爲什麼圖像大小在變化?它的尺寸變小,比它(386對301 KB)

UPDATE:

我也以JPG格式的圖片相同,尺寸保持不變。只有PNG正在改變它的大小。另一個PNG文件的大小已經變大了。有沒有辦法避免這種情況?

+0

''我認爲''Bitmap.Save'默認保存'PNG'中的圖像。這是與您正在加載的圖像相同的圖像格式嗎? – Pikoh

+0

PNG沒有任何問題,所以文件大小可能會改變,像素/質量本身保持不變。 –

+0

我使用下面的答案來確保我保存爲PNG,但大小仍在變化。 @CasparKleijne我需要大小保持不變,是否有可能做到這一點? –

回答

0

如果文件大小發生變化,則不必擔心。 PNG是一種無損格式,可在保存所有信息的同時壓縮文件。這確實意味着,即使文件大小減小,每個像素的信息和確切顏色也將保持不變。

文件的大小取決於用於保存圖像的庫使用的算法。對於不同的庫和程序,算法可能會有所不同。這就是爲什麼圖像的大小發生變化。你無法避免這一點。

0

您可能將圖像保存爲與原始文件不同的圖像格式。如果,例如,原始圖像是GIF,你應該做這樣的事情:

img.Save(path, System.Drawing.Imaging.ImageFormat.Gif); 

而且像這樣的任何格式。

+0

我打開一個.png文件並將其保存爲.png,我試着用你的方式,但尺寸仍然在變化。 –

+0

@SamStone那麼,也許.Net PNG算法與用於保存原始圖像的算法不同,或者可能正在更改顏色深度,從而導致該文件大小差異。只需檢查一下,你可以嘗試使用.net生成的png文件執行相同的操作,我的意思是,打開並保存第一步中生成的文件以查看它是否發生更改。您也可以使用任何圖像信息軟件來比較兩個圖像,看看是否有不同的東西... – Pikoh

0

System.Drawing中的PNG編碼器不會壓縮圖像特別嚴重,並且無法對其進行更改。很多人嘗試使用的EncoderParameters屬性都被忽略。

可用軟件中的不同PNG編碼器提供不同的壓縮功能,您將看到的差異是壓縮差異。第一個很可能沒有壓縮就保存,第二個壓縮更重。

相關問題