Kopieren Sie den Codecode wie folgt:
Paket com.blogs.image;
import java.awt.AlphaComposite;
java.awt.Color importieren;
java.awt.Font importieren;
import java.awt.Graphics2D;
java.awt.Image importieren;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
java.io.File importieren;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
* Bildwasserzeichen
*/
öffentliche Klasse ImageUtil {
/**
* @param args
*/
public static void main(String[] args) {
String srcImgPath = "e:/2.png";
String iconPath = "e://logo.jpg";
String targetPath = "e:/3.jpg";
//Wasserzeichen zum Bild hinzufügen
ImageUtil.waterMarkImageByIcon(iconPath, srcImgPath, targerPath, 0, 0,
, 0,1f);
// Wasserzeichen zum Bild hinzufügen, Wasserzeichenrotation -45
// ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath,
// targetPath2, -45);
}
/**
* Fügen Sie dem Bild ein Wasserzeichen hinzu und legen Sie den Drehwinkel des Wasserzeichenbilds fest
*
* @param iconPath
*Pfad für das Wasserzeichenbild
* @param srcImgPath
* Quellbildpfad
* @param targetPath
* Zielbildpfad
* @param Grad
* Drehwinkel des Wasserzeichenbildes
* @param Breite
* Breite (im Vergleich zu links)
* @param Höhe
* Höhe (im Vergleich zur Oberseite)
* @param Klarheit
* Je näher die Transparenz (Zahl kleiner als 1) bei 0 liegt, desto transparenter ist sie
*/
public static void waterMarkImageByIcon(String iconPath, String srcImgPath,
String targerPath, Integer-Grad, Integer-Breite, Integer-Höhe,
Float-Klarheit) {
OutputStream os = null;
versuchen {
Image srcImg = ImageIO.read(new File(srcImgPath));
System.out.println("width:" + srcImg.getWidth(null));
System.out.println("height:" + srcImg.getHeight(null));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
//Das Pinselobjekt abrufen
// Grafiken g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
//Zackte Kantenverarbeitung für Liniensegmente festlegen
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(null),
srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
null);
if (null != Grad) {
//Wasserzeichenrotation festlegen
g.rotate(Math.toRadians(Grad),
(double) buffImg.getWidth() / 2,
(double) buffImg.getHeight() / 2);
}
//Der Pfad des Wasserzeichenbildes. Das Wasserzeichen ist normalerweise GIF oder PNG, sodass die Transparenz eingestellt werden kann.
ImageIcon imgIcon = new ImageIcon(iconPath);
// Holen Sie sich das Image-Objekt.
Bild img = imgIcon.getImage();
float alpha = Klarheit; // Transparenz
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
Alpha));
//Gibt den Speicherort des Wasserzeichenbildes an
g.drawImage(img, width, height, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
os = new FileOutputStream(targerPath);
// Bilder generieren
ImageIO.write(buffImg, "JPG", os);
System.out.println("Hinzufügen des Wasserzeichenbildes abgeschlossen!");
} Catch (Ausnahme e) {
e.printStackTrace();
} Endlich {
versuchen {
if (null != os)
os.close();
} Catch (Ausnahme e) {
e.printStackTrace();
}
}
}
/**
* Fügen Sie dem Bild ein Wasserzeichen hinzu und legen Sie den Drehwinkel des Wasserzeichenbilds fest
*
* @param logoText
* Wasserzeichentext
* @param srcImgPath
* Quellbildpfad
* @param targetPath
* Zielbildpfad
* @param Grad
* Drehwinkel des Wasserzeichenbildes
* @param Breite
* Breite (im Vergleich zu links)
* @param Höhe
* Höhe (im Vergleich zur Oberseite)
* @param Klarheit
* Je näher die Transparenz (Zahl kleiner als 1) bei 0 liegt, desto transparenter ist sie
*/
public static void waterMarkByText(String logoText, String srcImgPath,
String targerPath, Integer-Grad, Integer-Breite, Integer-Höhe,
Float-Klarheit) {
//Der Pfad des Hauptbildes
InputStream ist = null;
OutputStream os = null;
versuchen {
Image srcImg = ImageIO.read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
//Das Pinselobjekt abrufen
// Grafiken g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
//Zackte Kantenverarbeitung für Liniensegmente festlegen
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(
srcImg.getScaledInstance(srcImg.getWidth(null),
srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
null);
if (null != Grad) {
//Wasserzeichenrotation festlegen
g.rotate(Math.toRadians(Grad),
(double) buffImg.getWidth() / 2,
(double) buffImg.getHeight() / 2);
}
//Farbe festlegen
g.setColor(Color.red);
//Schriftart festlegen
g.setFont(new Font("宋体", Font.BOLD, 30));
Float Alpha = Klarheit;
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
Alpha));
// Der erste Parameter -> der Inhalt der Einstellung, die nächsten beiden Parameter -> die Koordinatenposition (x, y) des Textes auf dem Bild.
g.drawString(logoText, width, height);
g.dispose();
os = new FileOutputStream(targerPath);
// Bilder generieren
ImageIO.write(buffImg, "JPG", os);
System.out.println("Wasserzeichentext hinzufügen abgeschlossen!");
} Catch (Ausnahme e) {
e.printStackTrace();
} Endlich {
versuchen {
if (null != ist)
is.close();
} Catch (Ausnahme e) {
e.printStackTrace();
}
versuchen {
if (null != os)
os.close();
} Catch (Ausnahme e) {
e.printStackTrace();
}
}
}
}
Es gibt auch einen Bildskalierungscode:
Kopieren Sie den Codecode wie folgt:
/**
* Bildskalierung (das Bild wird proportional auf die angegebene Größe skaliert und die leeren Teile werden mit Weiß gefüllt)
*
* @param srcPath
* Quellbildpfad
* @param destPath
* Bildpfad nach der Skalierung
*/
public static void zoomImage(String srcPath, String destPath, int destHeight, int destWidth) {
versuchen {
BufferedImage srcBufferedImage = ImageIO.read(new File(srcPath));
int imgWidth = destWidth;
int imgHeight = destHeight;
int srcWidth = srcBufferedImage.getWidth();
int srcHeight = srcBufferedImage.getHeight();
if (srcHeight >= srcWidth) {
imgWidth = (int) Math.round(((destHeight * 1.0 / srcHeight) * srcWidth));
} anders {
imgHeight = (int) Math.round(((destWidth * 1.0 / srcWidth) * srcHeight));
}
BufferedImage destBufferedImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D Graphics2D = destBufferedImage.createGraphics();
Graphics2D.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), null);
Graphics2D.dispose();
ImageIO.write(destBufferedImage, "JPEG", new File(destPath));
} Catch (IOException e) {
e.printStackTrace();
}
}