Copie el código de código de la siguiente manera:
paquete com.blogs.image;
importar java.awt.AlphaComposite;
importar java.awt.Color;
importar java.awt.Font;
importar java.awt.Graphics2D;
importar java.awt.Imagen;
importar java.awt.RenderingHints;
importar java.awt.image.BufferedImage;
importar java.io.File;
importar java.io.FileOutputStream;
importar java.io.InputStream;
importar java.io.OutputStream;
importar javax.imageio.ImageIO;
importar javax.swing.ImageIcon;
/**
* Marca de agua de imagen
*/
clase pública ImageUtil {
/**
* argumentos @param
*/
público estático vacío principal (String [] argumentos) {
Cadena srcImgPath = "e:/2.png";
Cadena iconPath = "e://logo.jpg";
Cadena targetPath = "e:/3.jpg";
//Agregar marca de agua a la imagen
ImageUtil.waterMarkImageByIcon(iconPath, srcImgPath, targerPath, 0, 0,
, 0,1f);
//Añadir marca de agua a la imagen, rotación de marca de agua -45
// ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath,
// rutadestino2, -45);
}
/**
* Agregue una marca de agua a la imagen y establezca el ángulo de rotación de la imagen de la marca de agua
*
* @param rutaicono
*Ruta de la imagen de marca de agua
* @param srcImgPath
* Ruta de la imagen de origen
* @param rutadestino
* Ruta de la imagen de destino
* @param grado
* Ángulo de rotación de la imagen de la marca de agua
* @param ancho
* Ancho (comparado con la izquierda)
* @param altura
* Altura (en comparación con la parte superior)
* @param claridad
* Cuanto más cerca esté la transparencia (número menor que 1) de 0, más transparente será
*/
agua vacía estática públicaMarkImageByIcon (String iconPath, String srcImgPath,
String targetPath, Grado entero, Ancho entero, Alto entero,
claridad flotante) {
Sistema operativo OutputStream = nulo;
intentar {
Imagen srcImg = ImageIO.read(nuevo archivo(srcImgPath));
System.out.println("ancho:" + srcImg.getWidth(nulo));
System.out.println("altura:" + srcImg.getHeight(nulo));
BufferedImage buffImg = nueva BufferedImage(srcImg.getWidth(nulo),
srcImg.getHeight(nulo), BufferedImage.TYPE_INT_RGB);
//Obtiene el objeto pincel
// Gráficos g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
//Establece el procesamiento de bordes dentados para segmentos de línea
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(nulo),
srcImg.getHeight(nulo), Imagen.SCALE_SMOOTH), 0, 0,
nulo);
si (nulo! = grado) {
//Establecer rotación de marca de agua
g.rotate(Math.toRadianes(grado),
(doble) buffImg.getWidth() / 2,
(doble) buffImg.getHeight() / 2);
}
// La ruta de la imagen de la marca de agua. La marca de agua suele ser gif o png, por lo que se puede configurar la transparencia.
ImageIcon imgIcon = nuevo ImageIcon(iconPath);
// Obtener el objeto Imagen.
Imagen img = imgIcon.getImage();
flotador alfa = claridad; // transparencia
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alfa));
//Indica la ubicación de la imagen de la marca de agua.
g.drawImage(img, ancho, alto, nulo);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
sistema operativo = nuevo FileOutputStream(targerPath);
// Generar imágenes
ImageIO.write(buffImg, "JPG", sistema operativo);
System.out.println("¡Se completó la adición de la imagen de marca de agua!");
} captura (Excepción e) {
e.printStackTrace();
} finalmente {
intentar {
si (nulo! = sistema operativo)
os.cerrar();
} captura (Excepción e) {
e.printStackTrace();
}
}
}
/**
* Agregue una marca de agua a la imagen y establezca el ángulo de rotación de la imagen de la marca de agua
*
* @param logoTexto
* Texto de marca de agua
* @param srcImgPath
* Ruta de la imagen de origen
* @param rutadestino
* Ruta de la imagen de destino
* @param grado
* Ángulo de rotación de la imagen de la marca de agua
* @param ancho
* Ancho (comparado con la izquierda)
* @param altura
* Altura (en comparación con la parte superior)
* @param claridad
* Cuanto más cerca esté la transparencia (número menor que 1) de 0, más transparente será
*/
agua vacía estática públicaMarkByText (String logoText, String srcImgPath,
String targetPath, Grado entero, Ancho entero, Alto entero,
Claridad flotante) {
//La ruta de la imagen principal
InputStream es = nulo;
Sistema operativo OutputStream = nulo;
intentar {
Imagen srcImg = ImageIO.read(nuevo archivo(srcImgPath));
BufferedImage buffImg = nueva BufferedImage(srcImg.getWidth(nulo),
srcImg.getHeight(nulo), BufferedImage.TYPE_INT_RGB);
//Obtener el objeto pincel
// Gráficos g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
//Establece el procesamiento de bordes dentados para segmentos de línea
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(nulo),
srcImg.getHeight(nulo), Imagen.SCALE_SMOOTH), 0, 0,
nulo);
si (nulo! = grado) {
//Establecer rotación de marca de agua
g.rotate(Math.toRadianes(grado),
(doble) buffImg.getWidth() / 2,
(doble) buffImg.getHeight() / 2);
}
//Establecer color
g.setColor(Color.rojo);
//Establecer fuente
g.setFont(nueva fuente("宋体", Font.BOLD, 30));
flotador alfa = claridad;
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alfa));
// El primer parámetro -> el contenido de la configuración, los dos siguientes parámetros -> la posición de las coordenadas (x, y) del texto en la imagen.
g.drawString(logoTexto, ancho, alto);
g.dispose();
sistema operativo = nuevo FileOutputStream(targerPath);
// Generar imágenes
ImageIO.write(buffImg, "JPG", sistema operativo);
System.out.println("¡Se completó la adición del texto de la marca de agua!");
} captura (Excepción e) {
e.printStackTrace();
} finalmente {
intentar {
si (nulo! = es)
es.close();
} captura (Excepción e) {
e.printStackTrace();
}
intentar {
si (nulo! = sistema operativo)
os.cerrar();
} captura (Excepción e) {
e.printStackTrace();
}
}
}
}
También hay un código de escala de imagen:
Copie el código de código de la siguiente manera:
/**
* Escalado de imagen (la imagen se escala proporcionalmente al tamaño especificado y las partes en blanco se rellenan con blanco)
*
* @param srcPath
* Ruta de la imagen de origen
* @param rutadestino
* Ruta de la imagen después de escalar
*/
imagen de zoom vacía estática pública (String srcPath, String destPath, int destHeight, int destWidth) {
intentar {
BufferedImage srcBufferedImage = ImageIO.read(nuevo archivo(srcPath));
int imgWidth = destinoWidth;
int alturaimg = alturadestino;
int srcWidth = srcBufferedImage.getWidth();
int srcHeight = srcBufferedImage.getHeight();
si (srcHeight >= srcWidth) {
imgWidth = (int) Math.round(((destHeight * 1.0 / srcHeight) * srcWidth));
} demás {
imgHeight = (int) Math.round(((destWidth * 1.0 / srcWidth) * srcHeight));
}
BufferedImage destBufferedImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D gráficos2D = destBufferedImage.createGraphics();
gráficos2D.setBackground(Color.BLANCO);
gráficos2D.clearRect(0, 0, ancho de destino, altura de destino);
gráficos2D.drawImage(srcBufferedImage.getScaledInstance(imgWidth, imgHeight, Image.SCALE_SMOOTH), (destWidth / 2) - (imgWidth / 2), (destHeight / 2) - (imgHeight / 2), nulo);
gráficos2D.dispose();
ImageIO.write(destBufferedImage, "JPEG", nuevo archivo (destPath));
} captura (IOException e) {
e.printStackTrace();
}
}