Copiez le code comme suit :
paquet com.blogs.image ;
importer java.awt.AlphaComposite ;
importer java.awt.Color ;
importer java.awt.Font ;
importer java.awt.Graphics2D ;
importer java.awt.Image ;
importer java.awt.RenderingHints ;
importer java.awt.image.BufferedImage ;
importer java.io.File ;
importer java.io.FileOutputStream ;
importer java.io.InputStream ;
importer java.io.OutputStream ;
importer javax.imageio.ImageIO ;
importer javax.swing.ImageIcon ;
/**
* Filigrane d'image
*/
classe publique ImageUtil {
/**
* @param arguments
*/
public static void main (String[] arguments) {
Chaîne srcImgPath = "e:/2.png";
Chaîne iconPath = "e://logo.jpg";
Chaîne targetPath = "e:/3.jpg";
//Ajouter un filigrane à l'image
ImageUtil.waterMarkImageByIcon(iconPath, srcImgPath, targerPath, 0, 0,
, 0,1f);
//Ajouter un filigrane à l'image, rotation du filigrane -45
// ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath,
// chemincible2, -45);
}
/**
* Ajoutez un filigrane à l'image et définissez l'angle de rotation de l'image en filigrane
*
* @param iconPath
*Chemin de l'image en filigrane
* @param srcImgPath
* Chemin de l'image source
* @param chemincible
* Chemin de l'image cible
* Diplôme @param
* Angle de rotation de l'image du filigrane
* @param largeur
* Largeur (par rapport à gauche)
* hauteur @param
* Hauteur (par rapport au sommet)
* @param clarté
* Plus la transparence (chiffre inférieur à 1) est proche de 0, plus elle est transparente
*/
public static void waterMarkImageByIcon (String iconPath, String srcImgPath,
Chaîne targerPath, Degré entier, Largeur entière, Hauteur entière,
clarté flottante) {
OutputStream os = null ;
essayer {
Image srcImg = ImageIO.read (nouveau fichier (srcImgPath));
System.out.println("largeur:" + srcImg.getWidth(null));
System.out.println("hauteur:" + srcImg.getHeight(null));
BufferedImage buffImg = nouveau BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
//Récupère l'objet pinceau
// Graphiques g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
//Définir le traitement des bords irréguliers pour les segments de ligne
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(null),
srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
nul);
if (null != degré) {
//Définir la rotation du filigrane
g.rotate(Math.toRadians(degré),
(double) buffImg.getWidth() / 2,
(double) buffImg.getHeight() / 2);
}
//Le chemin de l'image du filigrane. Le filigrane est généralement un gif ou un png, la transparence peut donc être définie.
ImageIcon imgIcon = new ImageIcon(iconPath);
// Récupère l'objet Image.
Image img = imgIcon.getImage();
float alpha = clarté ; // transparence
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha));
//Indique l'emplacement de l'image en filigrane
g.drawImage(img, largeur, hauteur, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
os = nouveau FileOutputStream(targerPath);
// Générer des images
ImageIO.write(buffImg, "JPG", os);
System.out.println("Ajout de l'image en filigrane terminé !");
} attraper (Exception e) {
e.printStackTrace();
} enfin {
essayer {
si (null != os)
os.close();
} attraper (Exception e) {
e.printStackTrace();
}
}
}
/**
* Ajoutez un filigrane à l'image et définissez l'angle de rotation de l'image en filigrane
*
* @param logoTexte
* Texte en filigrane
* @param srcImgPath
* Chemin de l'image source
* @param chemincible
* Chemin de l'image cible
* Diplôme @param
* Angle de rotation de l'image du filigrane
* @param largeur
* Largeur (par rapport à gauche)
* hauteur @param
* Hauteur (par rapport au sommet)
* @param clarté
* Plus la transparence (nombre inférieur à 1) est proche de 0, plus elle est transparente
*/
public static void waterMarkByText (String logoText, String srcImgPath,
Chaîne targerPath, Degré entier, Largeur entière, Hauteur entière,
Clarté flottante) {
//Le chemin de l'image principale
InputStream est = null ;
OutputStream os = null ;
essayer {
Image srcImg = ImageIO.read (nouveau fichier (srcImgPath));
BufferedImage buffImg = nouveau BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
//Récupère l'objet pinceau
// Graphiques g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
//Définir le traitement des bords irréguliers pour les segments de ligne
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(null),
srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
nul);
if (null != degré) {
//Définir la rotation du filigrane
g.rotate(Math.toRadians(degré),
(double) buffImg.getWidth() / 2,
(double) buffImg.getHeight() / 2);
}
//Définir la couleur
g.setColor(Color.red);
//Définir la police
g.setFont(new Font("宋体", Font.BOLD, 30));
float alpha = clarté ;
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha));
// Le premier paramètre -> le contenu du paramètre, les deux paramètres suivants -> la position des coordonnées (x, y) du texte sur l'image.
g.drawString(logoText, largeur, hauteur);
g.dispose();
os = nouveau FileOutputStream(targerPath);
// Générer des images
ImageIO.write(buffImg, "JPG", os);
System.out.println("Ajout du texte en filigrane terminé !");
} attraper (Exception e) {
e.printStackTrace();
} enfin {
essayer {
si (null != est)
est.close();
} attraper (Exception e) {
e.printStackTrace();
}
essayer {
si (null != os)
os.close();
} attraper (Exception e) {
e.printStackTrace();
}
}
}
}
Il existe également un code de mise à l'échelle de l'image :
Copiez le code comme suit :
/**
* Mise à l'échelle de l'image (l'image est mise à l'échelle proportionnellement à la taille spécifiée et les parties vierges sont remplies de blanc)
*
* @param srcPath
* Chemin de l'image source
* @param destPath
* Chemin de l'image après mise à l'échelle
*/
public static void zoomImage (String srcPath, String destPath, int destHeight, int destWidth) {
essayer {
BufferedImage srcBufferedImage = ImageIO.read (nouveau fichier (srcPath));
int imgWidth = destWidth;
int imgHeight = destHeight ;
int srcWidth = srcBufferedImage.getWidth();
int srcHeight = srcBufferedImage.getHeight();
si (srcHeight >= srcWidth) {
imgWidth = (int) Math.round(((destHeight * 1.0 / srcHeight) * srcWidth));
} autre {
imgHeight = (int) Math.round(((destWidth * 1.0 / srcWidth) * srcHeight));
}
BufferedImage destBufferedImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphiques2D = destBufferedImage.createGraphics();
graphiques2D.setBackground(Color.WHITE);
graphiques2D.clearRect(0, 0, destWidth, destHeight);
graphiques2D.drawImage(srcBufferedImage.getScaledInstance(imgWidth, imgHeight, Image.SCALE_SMOOTH), (destWidth / 2) - (imgWidth / 2), (destHeight / 2) - (imgHeight / 2), null);
graphiques2D.dispose();
ImageIO.write(destBufferedImage, "JPEG", nouveau fichier(destPath));
} catch (IOException e) {
e.printStackTrace();
}
}