Copie o código do código da seguinte forma:
pacote com.blogs.image;
importar java.awt.AlphaComposite;
importar java.awt.Color;
importar java.awt.Font;
importar java.awt.Graphics2D;
importar java.awt.Image;
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 d'água de imagem
*/
classe pública ImageUtil {
/**
* @param argumentos
*/
public static void main(String[] args) {
String srcImgPath = "e:/2.png";
String iconPath = "e://logo.jpg";
String targetPath = "e:/3.jpg";
//Adiciona marca d’água na imagem
ImageUtil.waterMarkImageByIcon(iconPath, srcImgPath, targerPath, 0, 0,
, 0,1f);
//Adiciona marca d'água à imagem, rotação da marca d'água -45
//ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath,
// targetPath2, -45);
}
/**
* Adicione marca d'água à imagem e defina o ângulo de rotação da imagem da marca d'água
*
* @param iconPath
*Caminho da imagem da marca d'água
* @param srcImgPath
* Caminho da imagem de origem
* @param targetPath
* Caminho da imagem alvo
* @param grau
* Ângulo de rotação da imagem da marca d'água
* @param largura
* Largura (em comparação com a esquerda)
* @param altura
* Altura (em comparação com o topo)
* @param clareza
* Quanto mais próxima a transparência (número menor que 1) estiver de 0, mais transparente ela será
*/
public static void waterMarkImageByIcon(String iconPath, String srcImgPath,
String targerPath, grau inteiro, largura inteira, altura inteira,
clareza flutuante) {
OutputStream os = null;
tentar {
Imagem srcImg = ImageIO.read(novo arquivo(srcImgPath));
System.out.println("largura:" + srcImg.getWidth(null));
System.out.println("altura:" + srcImg.getHeight(null));
BufferedImage buffImg = novo BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(nulo), BufferedImage.TYPE_INT_RGB);
//Obtém o objeto pincel
// Gráficos g= buffImg.getGraphics();
Gráficos2D g = buffImg.createGraphics();
//Definir processamento de bordas irregulares para segmentos de linha
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(nulo),
srcImg.getHeight(nulo), Image.SCALE_SMOOTH), 0, 0,
nulo);
if (nulo! = grau) {
//Definir rotação da marca d'água
g.rotate(Math.toRadians(grau),
(duplo)buffImg.getWidth()/2,
(duplo) buffImg.getHeight() / 2);
}
//O caminho da imagem da marca d'água A marca d'água geralmente é gif ou png, então a transparência pode ser definida.
ImageIcon imgIcon = new ImageIcon(iconPath);
// Obtenha o objeto Imagem.
Imagem img = imgIcon.getImage();
float alfa = clareza; // transparência
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alfa));
//Indica a localização da imagem da marca d’água
g.drawImage(img, largura, altura, nulo);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
os = novo FileOutputStream(targerPath);
//Gera imagens
ImageIO.write(buffImg, "JPG", os);
System.out.println("Adição de imagem de marca d'água concluída!");
} catch (Exceção e) {
e.printStackTrace();
} finalmente {
tentar {
se (nulo! = os)
os.close();
} catch (Exceção e) {
e.printStackTrace();
}
}
}
/**
* Adicione marca d'água à imagem e defina o ângulo de rotação da imagem da marca d'água
*
* @param logoTexto
* Texto de marca d’água
* @param srcImgPath
* Caminho da imagem de origem
* @param targetPath
* Caminho da imagem alvo
* @param grau
* Ângulo de rotação da imagem da marca d'água
* @param largura
* Largura (em comparação com a esquerda)
* @param altura
* Altura (em comparação com o topo)
* @param clareza
* Quanto mais próxima a transparência (número menor que 1) estiver de 0, mais transparente ela será
*/
public static void waterMarkByText(String logoText, String srcImgPath,
String targerPath, grau inteiro, largura inteira, altura inteira,
Clareza flutuante) {
//O caminho da imagem principal
InputStream é = nulo;
OutputStream os = null;
tentar {
Imagem srcImg = ImageIO.read(novo arquivo(srcImgPath));
BufferedImage buffImg = novo BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(nulo), BufferedImage.TYPE_INT_RGB);
//Obtém o objeto pincel
// Gráficos g= buffImg.getGraphics();
Gráficos2D g = buffImg.createGraphics();
//Definir processamento de bordas irregulares para segmentos de linha
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(nulo),
srcImg.getHeight(nulo), Image.SCALE_SMOOTH), 0, 0,
nulo);
if (nulo! = grau) {
//Definir rotação da marca d'água
g.rotate(Math.toRadians(grau),
(duplo)buffImg.getWidth()/2,
(duplo) buffImg.getHeight() / 2);
}
//Definir cor
g.setColor(Color.vermelho);
//Definir fonte
g.setFont(new Font("宋体", Font.BOLD, 30));
float alfa = clareza;
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alfa));
// O primeiro parâmetro -> o conteúdo da configuração, os próximos dois parâmetros -> a posição das coordenadas (x, y) do texto na imagem.
g.drawString(logoTexto, largura, altura);
g.dispose();
os = novo FileOutputStream(targerPath);
//Gera imagens
ImageIO.write(buffImg, "JPG", os);
System.out.println("Adição de texto de marca d'água concluída!");
} catch (Exceção e) {
e.printStackTrace();
} finalmente {
tentar {
se (nulo! = é)
é.close();
} catch (Exceção e) {
e.printStackTrace();
}
tentar {
se (nulo! = os)
os.close();
} catch (Exceção e) {
e.printStackTrace();
}
}
}
}
Há também um código de dimensionamento de imagem:
Copie o código do código da seguinte forma:
/**
* Dimensionamento da imagem (a imagem é dimensionada proporcionalmente para o tamanho especificado e as partes em branco são preenchidas com branco)
*
* @param srcPath
* Caminho da imagem de origem
* @param caminhodest
* Caminho da imagem após dimensionamento
*/
public static void zoomImage(String srcPath, String destPath, int destHeight, int destWidth) {
tentar {
BufferedImage srcBufferedImage = ImageIO.read(novo arquivo(srcPath));
int imgWidth = larguradest;
int imgHeight = destinoHeight;
int srcWidth = srcBufferedImage.getWidth();
int srcHeight = srcBufferedImage.getHeight();
if (srcHeight >= largurasrc) {
imgWidth = (int) Math.round(((destHeight * 1.0 / srcHeight) * srcWidth));
} outro {
imgHeight = (int) Math.round(((destWidth * 1.0 / srcWidth) * srcHeight));
}
BufferedImage destBufferedImage = novo BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Gráficos2D gráficos2D = destBufferedImage.createGraphics();
gráficos2D.setBackground(Color.WHITE);
graphics2D.clearRect(0, 0, destWidth, destHeight);
graphics2D.drawImage(srcBufferedImage.getScaledInstance(imgWidth, imgHeight, Image.SCALE_SMOOTH), (destWidth / 2) - (imgWidth / 2), (destHeight / 2) - (imgHeight / 2), nulo);
gráficos2D.dispose();
ImageIO.write(destBufferedImage, "JPEG", novo arquivo(destPath));
} catch (IOException e) {
e.printStackTrace();
}
}