Clase Java.awt.image.RescaleOp en Java con ejemplos

RescaleOp es una clase en el paquete java.awt.image que implementa la interfaz BufferedImageOp y RasterOp . Esta clase realiza un cambio de escala píxel por píxel de los datos en la imagen de origen al multiplicar los valores de muestra para cada píxel por un factor de escala y luego agregar un desplazamiento. Los valores de muestra escalados se recortan a la representación mínima/máxima en la imagen de destino. Esta clase se utiliza en el procesamiento de imágenes.

  • Para Rasters , el cambio de escala opera en bandas. El número de conjuntos de constantes de escala puede ser uno, en cuyo caso se aplican las mismas constantes a todas las bandas, o debe ser igual al número de bandas de ráster de origen.
  • Para BufferedImages , el cambio de escala opera en el color. El número de conjuntos de constantes de escala puede ser uno, en cuyo caso se aplican las mismas constantes a todos los componentes de color.
  • Las imágenes con un IndexColorModel no se pueden cambiar de escala.
  • Si se especifica un objeto RenderingHints en el constructor, la sugerencia de reproducción de color y la sugerencia de tramado se pueden usar cuando se requiere conversión de color.

Sintaxis:

public class RescaleOp
extends Object
implements BufferedImageOp, RasterOp

Constructores: 

  • public RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints tips): Constructor con los scaleFactors y compensaciones deseados. las sugerencias pueden ser nulas.
  • public RescaleOp(float scaleFactor, float offset, RenderingHints tips): Constructor con un solo scaleFactor y offset. las sugerencias pueden ser nulas.

Métodos:

  • BufferedImage createCompatibleDestImage?(BufferedImage src, ColorModel destCM): este método crea una imagen de destino puesta a cero con el tamaño y la cantidad de bandas correctos.
  • WritableRaster createCompatibleDestRaster?(Raster src): este método crea un ráster de destino cero con el tamaño y la cantidad de bandas correctos, dada esta fuente.
  • ¿Filtro BufferedImage? (BufferedImage src, BufferedImage dst): este método vuelve a escalar la fuente BufferedImage.
  • ¿Filtro WritableRaster? (Raster src, WritableRaster dst): este método vuelve a escalar los datos de píxeles en el ráster de origen.
  • Rectangle2D getBounds2D?(BufferedImage src): este método devuelve el cuadro delimitador de la imagen de destino reescalada.
  • Rectangle2D getBounds2D?(Raster src): este método devuelve el cuadro delimitador del ráster de destino reescalado.
  • int getNumFactors?(): este método devuelve el número de factores de escala y compensaciones utilizados en este RescaleOp.
  • float[] getOffsets?(float[] offsets): este método devuelve las compensaciones en la array dada.
  • Point2D getPoint2D?(Point2D srcPt, Point2D dstPt): este método devuelve la ubicación del punto de destino dado un punto en el origen.
  • RenderingHints getRenderingHints?(): este método devuelve las sugerencias de representación para esta operación.
  • float[] getScaleFactors?(float[] scaleFactors): este método devuelve los factores de escala en la array dada.

Ejemplo 1: En el ejemplo dado, configuraremos el contraste de una imagen utilizando un solo factor de escala y compensación. El siguiente código reducirá el brillo en un 25 % y oscurecerá el píxel en un factor de 3,6. 

Java

import java.awt.image.*;
import java.net.*;
import java.awt.*;
import java.io.*;
import javax.imageio.*;
 
public class DemoonRescaleop {
 
    public static void main(String[] args) throws Exception
    {
        // picking the image from the url
        URL url
            = new URL("https:// media.geeksforgeeks.org"
                      + "/wp-content/uploads/geeksforgeeks-9.png");
 
        // Reading the image from url
        Image image = ImageIO.read(url);
 
        // Setting up the scaling and
        // the offset parameters for processing
        RescaleOp rop = new RescaleOp(.75f, 3.6f, null);
 
        // applying the parameters on the image
        // by using filter() method, it takes the
        // Source and destination objects of buffered reader
        // here our destination object is null
        BufferedImage bi
            = rop.filter((BufferedImage)image, null);
        ImageIO.write(bi, "png",
                      new File("processed.png"));
    }
}

Aporte:

Original Image

Imagen original

Producción:

processed.png

procesado.png

El método usado filter(BufferedImage src, BufferedImage dst) vuelve a escalar el origen de BufferedImage al destino BufferedImage y devuelve lo mismo. Aquí no hemos mencionado ninguna imagen de destino y hemos escrito nulo en su lugar. Aquí hemos asignado el objeto BufferedImage con el resultado reescalado. Ejemplo 2:En el ejemplo dado, estableceremos el contraste de una imagen utilizando una array de factor de escala y desplazamiento. Cada array será de tamaño 3, lo que indica el componente rojo, verde y azul de cada píxel. En el siguiente código, el brillo general aumenta en un 45 por ciento y todos los colores de los píxeles se desplazan hacia el color verde. El desplazamiento de 150 aumenta el componente verde de cada píxel en un 58,6 por ciento (150/256). Recuerde, el desplazamiento se suma al valor del color y, por lo tanto, debe ser un valor entre 0 y 255, a diferencia del factor de escala, que actúa como un porcentaje. 

Java

import java.awt.image.*;
import java.net.*;
import java.awt.*;
import java.io.*;
import javax.imageio.*;
public class DemoonRescaleop {
 
    public static void main(String[] args) throws Exception
    {
        // picking the image from the URL
        URL url
            = new URL("https:// media.geeksforgeeks.org"
                      + "/wp-content/uploads/geeksforgeeks-9.png");
 
        // Reading the image from url
        Image image = ImageIO.read(url);
 
        // Setting up the scaling and
        // the offset parameters for processing
        float[] factors = new float[] {
 
            // RGB each value for 1 color
            1.45f, 1.45f, 1.45f
        };
 
        float[] offsets = new float[] {
            0.0f, 150.0f, 0.0f
        };
 
        RescaleOp rop
            = new RescaleOp(factors, offsets, null);
 
        // applying the parameters on the image
        // by using filter() method, it takes the
        // Source and destination objects of buffered reader
        // here our destination object is null
        BufferedImage bi
            = rop.filter((BufferedImage)image, null);
        ImageIO.write(bi, "png",
                      new File("processed.png"));
    }
}

Aporte:

Original Image

Imagen original

Producción:

procesado.png

El método usado filter(BufferedImage src, BufferedImage dst) vuelve a escalar el origen de BufferedImage al destino BufferedImage y devuelve lo mismo. Aquí no hemos mencionado ninguna imagen de destino y hemos escrito nulo en su lugar. Aquí hemos asignado el objeto BufferedImage con el resultado reescalado. Referencia: https://docs.oracle.com/javase/9/docs/api/java/awt/image/RescaleOp.html

Publicación traducida automáticamente

Artículo escrito por piyush25pv y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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