Necesito procesar imágenes grandes (20,000x20,000pixels) en C#. Abrir estas imágenes directamente no es el camino a seguir debido a limitaciones de memoria, pero lo que quiero hacer es dividir la imagen en pedazos más pequeños (recorte). Estaba buscando una biblioteca de terceros que pudiera ser el truco, pero hasta ahora no hay resultados. Intenté FreeImage e ImageMagick, pero no pueden abrir una imagen de 20,000x20x000 píxeles. ¿Cómo puedo conseguir esto?Cómo recortar una imagen enorme
Respuesta
No sé si esto ayudaría, pero aquí hay un artículo en image processing with C# lambda expressions.
Mi proyecto actual en el trabajo consiste en un visor de imágenes/programa de análisis capaz de cargar imágenes de más de 16 gb. Debe usar el archivo IO manual, extraer la información del encabezado y crear sus subimágenes a pedido (o si está procesando la imagen, puede crear un único mosaico y procesarlo en el lugar). Muy pocas bibliotecas le darán la capacidad de cargar/modificar una imagen de 20k por 20k (1.2gb a 24bpp) y las que lo hacen raramente lo harán con algo parecido al rendimiento (si eso es una preocupación).
16gb + images? Eso es increíble, ¿de dónde vienen? –
Trabajamos con imágenes de radar de apertura sintética que pueden generar imágenes muy grandes: P –
ja, eso es rudo (Google tiene algunas buenas imágenes sobre eso), qué idiomas usas.Tengo curiosidad si C# podría manejar ese tipo de carga de trabajo –
No conozco ninguna biblioteca existente para hacer esto.
Probablemente tenga que descifrar la secuencia del archivo de imagen, buscar la ubicación donde existen los datos de color y píxel, y leer una sección de los datos de píxeles en una matriz, y crear su imagen a partir de eso.
Por ejemplo, para el BMP file format, tendrá que buscar en la tabla de colores, cargar la tabla de colores, a continuación, busque la sección matriz de píxeles, sin embargo, muchas de carga pixes que desea en una matriz, a continuación, hacer un nuevo mapa de bits con solo esos píxeles.
Lo haría con ImageMagick. Hay una API .NET bastante sólida disponible, y normalmente es la mejor manera de hacer un procesamiento de imágenes como este.
Busque en .NET, parte del camino hacia abajo de la página.
http://www.imagemagick.org/script/api.php
Aquí está la información sobre la forma en la materia de cultivos en ImageMagick trabaja, para la versión de línea de comandos.
Usted puede utilizar el incorporado en las bibliotecas .NET.
Uso
sourceBitmap = (Bitmap)Image.FromStream(sourceFileStream, false, false);
que detendrá los datos de las imágenes en caché en la memoria. Se puede crear un nuevo mapa de bits de destino para dibujar una subsección de esa imagen masiva a:
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);
}
Dónde destRect puede ser todo el tamaño del outputImage, o un área más pequeña.
- 1. ¿Cómo puedo recortar una imagen en Qt?
- 2. Cómo recortar una imagen en android?
- 3. Cómo recortar una imagen en iOS
- 4. ¿Cómo puedo recortar una imagen con Pygame?
- 5. Generar una imagen enorme en C#
- 6. Recortar imagen en PHP
- 7. imagen Matplotlib savefig recortar
- 8. Recortar imagen usando CGImageCreateWithImageInRect
- 9. Recortar imagen en Android
- 10. Recortar imagen del centro PHP
- 11. Recortar imagen ala Google Goggles
- 12. cómo recortar la imagen en pedazos programáticamente
- 13. Cómo recortar la imagen analizada en android?
- 14. Recortar imagen capturada por AVCaptureSession
- 15. Redimensionar la imagen con Recortar
- 16. Cómo recortar una imagen usando jquery ajax y php?
- 17. Cómo recortar un rectángulo de una imagen en android
- 18. ¿Cómo seleccionar y recortar una imagen en Android?
- 19. Recortar una imagen PNG a su tamaño mínimo
- 20. Redimensionar/recortar/rellenar una imagen en un tamaño fijo
- 21. recortar una imagen ampliada en ImageView dentro de scrollView
- 22. Recortar una imagen usando varios parches en matplotlib
- 23. Photoshop: Copiar y pegar una imagen sin recortar la transparencia
- 24. Usar javascript para recortar la imagen
- 25. Cómo recortar el UIImage?
- 26. Recortar o enmascarar una imagen en un círculo
- 27. Recortar la imagen usando PIL en python
- 28. Cómo recortar automáticamente un borde blanco de imagen en Java?
- 29. ¿Cómo manejar una cadena enorme correctamente?
- 30. Cómo implementar una matriz enorme en C
¿En qué formato está la imagen? En formatos como mapa de bits, puede usar el archivo io directamente. Si desea usar GDI o lo que sea, entonces convierta los fragmentos individuales a una secuencia y luego cárguelos en una imagen). Los formatos como PNG requerirían profundizar, examinar cómo los archivos PNG se dividen en bloques y trabajar con ellos directamente. – Brian