2016-07-26 10 views
2

私のコードでは、ビットマップイメージを開き、単に再保存します。同じ品質と特性を維持する必要があります。しかし結果として画像のサイズは変わりますが、解像度は変わらず視覚的に変わりません。何も変更せずに画像を開いて保存するにはどうすればよいですか? マイコード:将来的にはイメージを開いて、同じパラメータで再保存します。c#

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

それは、画像の唯一の不透明度を変更する必要がありますが、今、それはちょうどそれを開いて保存します。なぜイメージのサイズが変化していますか? 、サイズが同じJPG形式の画像と同じまま

私はなかった:それはUPDATEが(301 KBに対する386)

たよりもサイズが小さくなります。 PNGのみがサイズを変更しています。別のPNGファイルのサイズが大きくなっています。これを避ける方法はありますか?

+0

'Bitmap.Save'はデフォルトで' PNG'のイメージを保存します。これは読み込んでいる画像と同じ画像フォーマットですか? – Pikoh

+0

PNGは無能ですので、ファイルサイズが変わる可能性があります。ピクセル/品質自体は変わりません。 –

+0

私は以下の答えを使ってpngとして保存していますが、サイズはまだ変わっています。 @CasparKleijne私は同じままにする必要があるサイズは、それを行うことは可能ですか? –

答えて

0

ファイルサイズが変更されても心配する必要はありません。 PNGは、すべての情報を維持しながらファイルを圧縮するロスレスフォーマットです。つまり、ファイルサイズが小さくなっても、各ピクセルの情報と正確な色は同じままです。

イメージの保存に使用されるアルゴリズムによって、ファイルのサイズがどのくらい大きくなるかが決まります。異なるライブラリとプログラムの場合、アルゴリズムは少し異なる場合があります。画像のサイズが変わる理由あなたはこれを避けることはできません。

0

イメージを元のファイルとは別のイメージ形式で保存している可能性があります。

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

し、任意のフォーマットで、このような:、例えば、原画像がGIFであれば、あなたはこのような何かを行う必要があります。

+0

.pngファイルを開いて.pngファイルとして保存していますが、あなたの方法で試してみましたが、サイズはまだ変更されています。 –

+0

@SamStoneさて、おそらく.Net PNGアルゴリズムは、元の画像を保存するために使用されたアルゴリズムとは異なるかもしれません。あるいは、色の深度を変更して、そのファイルサイズの違いを引き起こしているかもしれません。チェックするだけで、.netで生成されたpngファイルと同じ操作を実行しようとすることができます。つまり、最初の手順で生成されたファイルを開いて保存して、変更があるかどうかを確認します。また、任意の画像情報ソフトウェアを使用して、両方の画像を比較して、異なるものがあるかどうかを確認することができます。 – Pikoh

0

System.DrawingのPNGエンコーダは、画像を特に大きく圧縮せず、変更する方法もありません。多くは使用しようとしているEncoderParametersプロパティは単に無視されます。

利用可能なソフトウェアのPNGエンコーダによって、さまざまな圧縮機能が提供されますが、違いは圧縮の違いです。最初は圧縮なしで保存され、2番目は重い圧縮で保存されました。

関連する問題