C#で大きな画像(20,000x20,000ピクセル)を処理する必要があります。これらの画像を直接開くことはメモリの制限のために行く方法ではありませんが、私がしたいのは画像を小さな部分に分割することです(クロッピング)。私はそのトリックができるサードパーティ製のライブラリを探していましたが、今のところ結果はありません。 FreeImageとImageMagickを試しましたが、20,000x20x000ピクセルの画像を開くことはできません。どうすればこれを達成できますか?巨大画像を切り抜くには
答えて
これが役立つかどうかわかりませんが、こちらはimage processing with C# lambda expressionsの記事です。
現在の私の現在のプロジェクトは、16GBを超えるイメージをロードできる画像ビューア/解析プログラムで構成されています。手動のファイルIOを使用し、ヘッダ情報を取り出し、必要に応じてサブイメージを作成する必要があります(イメージを処理している場合は、単一のタイルを作成してその場で処理できます)。非常に少数のライブラリが、20k×20kの画像(24bppで1.2GB)を読み込み/変更する機能を提供するライブラリはほとんどありませんし、パフォーマンスに似ているものではほとんどそうすることはありません(それが懸念される場合)。
16GB +の画像ですか?それは素晴らしいです、彼らはどこから来ていますか? –
私たちは非常に巨大な画像を生成することができる合成開口レーダー画像を扱います:P –
hah、thats badass(googleには素晴らしい画像がいくつかあります)、どの言語を使用していますか?私はC#がその種のワークロードを処理できるかどうか不思議です –
私はこれを行うための既存のライブラリが分かりません。
おそらく、画像ファイルストリームを開けて、色とピクセルデータが存在する場所に移動し、ピクセルデータのセクションを配列に読み込んでそこから画像を作成する必要があります。
たとえば、BMP file formatの場合は、カラーテーブルを検索し、カラーテーブルを読み込んだ後、ピクセル配列セクションに移動し、希望する多くのpixesを配列にロードしてから、新しいビットマップを作成しますそれらのピクセルだけで
私はImageMagickでやっています。非常に堅実な.NET APIがあり、通常はこのような画像処理を行うための最良の方法です。
ページの下にある.NETの部分を見てください。
http://www.imagemagick.org/script/api.php
ここでのImageMagickでの作物のものはコマンドライン版のために、どのように機能するかについての情報です。あなたはビルトインの.NETライブラリを使用することができます
。
使用メモリにキャッシュされた画像データを停止します
sourceBitmap = (Bitmap)Image.FromStream(sourceFileStream, false, false);
。あなたはその巨大な画像のサブセクションを描画する新しいデスティネーションビットマップを作成することができますdestRectはoutputImage全体の大きさ、または小さい領域とすることができる
var output = new Bitmap(outputWidth, outputHeight);
var outputGraphics = Graphics.FromImage(output);
outputGraphics.DrawImage(sourceBitmap, destRect, srcRect, GraphicsUnit.Pixel);
using (var fs = File.OpenWrite(outputFilePath))
{
output.Save(fs, System.Drawing.Imaging.ImageFormat.Png);
}
。
- 1. PHP - 画像を切り抜くには?
- 2. ASP.NET C#:画像を切り抜く
- 3. C#で画像を切り抜く
- 4. プログラムで画像を切り抜く
- 5. Cで画像を切り抜く#
- 6. Javascriptで画像を切り抜く
- 7. CGImageRefで画像を切り抜く
- 8. 画像をCSSで切り抜く
- 9. 画像を手動で切り抜く
- 10. OpenCV C++で画像を切り抜く
- 11. 中央の画像と切り抜く
- 12. 画像を切り抜く/切り抜くことができません
- 13. 大きな画面でストライプになるように画像を切り抜く
- 14. jpeg画像からポリゴン画像を切り抜くJava
- 15. GIF画像の一部を切り抜くには?
- 16. Rails、Carrierwave、Minimagickでアップロードした画像を切り抜くには?
- 17. パスから画像を切り抜くには?
- 18. 画像をキャプチャして切り抜き画像を切り抜いて保存画像
- 19. %をベースにopencvとpythonで画像を切り抜く方法
- 20. HTML5 CSSまたはC#.NETで画像を切り抜く
- 21. Androidで画像を切り抜く方法は?
- 22. jpg画像をPHPでのみ切り抜く方法は?
- 23. 画像を切り抜き、PHPでアップロード
- 24. div内の画像を中央に切り抜く
- 25. 画像を四角形に切り抜く方法
- 26. 画像をメモリに読み込まないで大きなTIFF画像.NETを切り抜く
- 27. max-heightは下から画像を切り抜き、上から切り抜く方法は?
- 28. 矩形を使って画像を切り抜く
- 29. エリアを選択してiPhoneで画像を切り抜く
- 30. cssを使用して画像を切り抜く
画像はどのような形式ですか?ビットマップのようなフォーマットでは、ファイルioを直接使うことができます。 GDIなどを使用する場合は、個々のチャンクをストリームに変換してイメージにロードします)。 PNGのような形式では、PNGファイルをブロックに分割して直接処理する方法を詳しく調べる必要があります。 – Brian