Saltar al contenido

¿Cómo recortar alguna región de imagen en Java?

Solución:

Mi suposición inicial es que tu (x + w) > image.getWidth().

Si imprime image.getWidth (), ¿es 3264? : O

Lo que estás haciendo actualmente es esto:

<-- 3264 ------>
+--------------+
|    orig      | +-- Causing the problem
|              | V
|   +--------------+
|100| overlap  |   |
|   |          |   |
|   |          |   |
+---|----------+   |
    |              |
    |    out       |
    +--------------+

Si está tratando de recortar la esquina superior de orig y simplemente obtener “superposición”, entonces debe hacer

BufferedImage out = image.getSubimage(x, y, w-x, h-y);

Si está intentando hacer esto:

+------------------+
|                  |
|  +-----------+   |
|  |           |   |
|  |           |   |
|  |           |   |
|  |           |   |
|  +-----------+   |
|                  |
+------------------+

Entonces necesitas hacer esto:

BufferedImage out = image.getSubimage(x, y, w-2*x, h-2*y);

Para aquellos que solo quieren recortar y otras funciones básicas de manipulación de imágenes en su software, les recomiendo usar una biblioteca de procesamiento de imágenes. Por lo general, las implementaciones están optimizadas y son estables.

Algunas bibliotecas de procesamiento de imágenes de Java: ImageJ, Marvin, JMagick, JIU, JH Labs, imgscalr.

Otra ventaja es mantener las cosas simples de su lado. Puede hacer muchas cosas con solo unas pocas líneas de código. En el siguiente ejemplo, utilicé Marvin Framework para recortar.

Original:
ingrese la descripción de la imagen aquí

Recortada:
ingrese la descripción de la imagen aquí

Fuente:

MarvinImage image = MarvinImageIO.loadImage("./res/famousFace.jpg");
crop(image.clone(), image, 60, 32, 182, 62);
MarvinImageIO.saveImage(image, "./res/famousFace_cropped.jpg");
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *