2

ファイルに保存する必要があるメソッドを書いてSystem.Drawing.Imageいます。作成元の元のファイルを知らなくても、Imageファイル拡張子を決定する方法はありますか?

私が思いついた最善の解決策は、Image.RawFormat の値で Switch/Case ステートメントを使用することです。

Image元の形式で保存しても問題ありませんか? PNGから生成されたものはImage、JPEGから生成されたものとは異なりますか? それとも、オブジェクトに格納されているデータはImage完全に一般的なものですか?

4

4 に答える 4

2

Steve Danner は、JPG から作成された画像がメモリにロードされると PNG から作成された画像とは異なって見えるという点で正しいですが、それは圧縮されていないデータ ストリームです。

これは、任意のファイル形式で保存できることを意味します。

ただし、JPG 画像を読み込んで別の JPG として保存すると、圧縮アルゴリズムにより、より多くの情報が失われます。これを繰り返す、最終的に画像が失われます。

可能であれば、常に PNG として保存することをお勧めします。

于 2010-09-03T20:54:11.000 に答える
1

Image.RawFormat には問題があります。近づかないでください。明確な理由もなく法的な価値がないという報告をいくつか見ました。まだ診断されていません。

その通りです。保存する形式は関係ありません。ファイルをロードした後は、同じピクセル形式のビットマップ (ベクトルではない) の内部形式は同じです。通常、jpeg ファイルの再圧縮は避けてください。サイズが大きくなり、より多くのアーティファクトを取得する傾向があります。Steve はマルチフレーム ファイルについて言及していますが、それらは別の方法で保存する必要があります。

于 2010-09-03T20:48:48.580 に答える
0

あなたの質問に答えるには、 「画像を元の形式で保存しても問題ありませんか?」明示的に: はい、そうですが、否定的な方法で。

画像をロードすると、内部でビットマップに圧縮解除されます (または、ChrisFが呼ぶように、圧縮されていないデータ ストリーム)。そのため、元の画像が非可逆圧縮 (jpeg など) を使用している場合、同じ形式で保存すると、再び情報が失われます (つまり、アーティファクトが多くなり、詳細が少なくなり、品質が低下します)。特に、読み取り - 変更 - 保存のアクションを繰り返した場合、これは避けるべきものです。

(画像を変更していない場合は、避けるべきものでもあることに注意してください。解凍を繰り返すだけで、圧縮サイクルによって画質が低下します)。

したがって、ここでディスク容量が問題にならない場合 (通常、HD ビデオに十分な大きさのハードディスクの時代ではありません)、中間画像は常にロスレス圧縮形式または非圧縮で保存してください。用途によっては、最終出力を圧縮形式で保存することを検討してください。(これらの最終的な写真を Web 上に表示する場合は、jpeg または png が適しています)。

于 2010-09-03T21:09:15.013 に答える
0

はい、ファイル形式が異なれば、圧縮、複数フレームなどのさまざまな機能がサポートされるため、これは間違いなく重要です。

私はいつもあなたのような switch ステートメントを使用してきましたが、おそらく拡張メソッドなどに組み込まれています。

于 2010-09-03T20:19:55.277 に答える