Мне нужно обработать большие изображения (20,000x20,000pixels) на C#. Открытие этих изображений напрямую - это не выход из-за ограничений памяти, но то, что я хочу сделать, это разделить изображение на более мелкие части (обрезка). Я искал стороннюю библиотеку, которая могла бы обмануть, но пока ничего не получилось. Я попробовал FreeImage и ImageMagick, но они не могут открыть изображение размером 20 000x20x000 пикселей. Как я могу это достичь?Как обрезать огромное изображение
ответ
Не знаю, поможет ли это, но вот статья на image processing with C# lambda expressions.
Мой текущий проект на работе состоит из программы просмотра изображений/анализа, способной загружать изображения размером более 16 ГБ. Вы должны использовать ручной файл ввода-вывода, вывести информацию заголовка и создать свои субимазы по требованию (или если вы обрабатываете изображение, вы можете создать одну плиту и обработать ее на месте). Очень немногие библиотеки собираются предоставить вам возможность загружать/изменять изображение 20k на 20k (1.2gb при 24bpp), а те, которые делают это, редко делают это с чем-то похожим на производительность (если это вызывает беспокойство).
16gb + изображения? Это потрясающе, откуда они взялись? –
Мы работаем с радарными изображениями с синтезированной апертурой, которые могут генерировать очень большие изображения: P –
hah, thats badass (у Google есть отличные изображения на этом), на каких языках вы используете.Мне любопытно, может ли C# справиться с такой нагрузкой –
Я не знаю ни одной существующей библиотеки, чтобы это сделать.
Возможно, вам придется взломать поток файлов изображений, найти место, где имеются данные о цвете и пикселе, и прочитать раздел данных о пикселях в массиве и создать свое изображение из этого.
Например, для BMP file format вы хотите искать в таблице цветов, загружать таблицу цветов, затем искать секцию массива пикселей, загружать сколько угодно пикселей в массив, а затем создавать новое растровое изображение с этими пикселями.
Я бы сделал это с ImageMagick. Существует довольно простой .NET API, и, как правило, это лучший способ обработки изображений.
Посмотрите на. NET, часть пути вниз по странице.
http://www.imagemagick.org/script/api.php
Вот информация о том, как урожай материал в ImageMagick работает, для версии командной строки.
Вы можете использовать встроенный в .Net библиотеки.
Использование
sourceBitmap = (Bitmap)Image.FromStream(sourceFileStream, false, false);
Это остановит данные изображения из кэшируются в памяти. Вы можете создать новое растровое изображение назначения, чтобы сделать подраздел этого массивного изображения для:
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);
}
Где destRect может быть весь размер outputImage или меньшую площадь.
- 1. Как обрезать это изображение?
- 2. Как обрезать фоновое изображение?
- 3. PHP - Как обрезать изображение?
- 4. Как обрезать растровое изображение?
- 5. Как обрезать изображение?
- 6. Как обрезать растровое изображение?
- 7. Как обрезать/обрезать изображение равномерно в ImageMagick?
- 8. Render огромное изображение в Qt
- 9. нагрузки огромное изображение из файла
- 10. Как разбить это огромное изображение 15104 * 11264
- 11. Как обрезать изображение и сохранить?
- 12. Как обрезать изображение в Android?
- 13. Как обрезать изображение в Android?
- 14. Как обрезать изображение в iPhone?
- 15. как обрезать растровое изображение обоев
- 16. Как обрезать изображение в P5?
- 17. Как обрезать изображение в Cocos2d
- 18. Как обрезать изображение по кругу?
- 19. Как обрезать изображение на кадр
- 20. Как обрезать изображение в vb.net?
- 21. Как обрезать изображение в codeigniter?
- 22. Как обрезать изображение в Октаве?
- 23. Как обрезать изображение на Java?
- 24. Как обрезать изображение и перезаписывать
- 25. Как обрезать изображение в Javascript
- 26. Как обрезать изображение при загрузке?
- 27. Как обрезать изображение в iOS
- 28. Как обрезать изображение с пути?
- 29. ImageView wrap_content - как обрезать изображение
- 30. Позвольте пользователю обрезать изображение
В каком формате находится изображение? В таких форматах, как bitmap, вы можете просто использовать файл io напрямую. Если вы хотите использовать GDI или что-то еще, вы затем конвертируете отдельные куски в поток, а затем загружаете его в изображение). Форматы, такие как PNG, потребуют от вас глубже изучить, как PNG-файлы разбиваются на блоки и работают с ними напрямую. – Brian