انسخ رمز الكود كما يلي:
الحزمة com.blogs.image;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
استيراد java.awt.Graphics2D؛
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
استيراد java.io.File؛
import java.io.FileOutputStream;
استيراد java.io.InputStream؛
استيراد java.io.OutputStream؛
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
* صورة العلامة المائية
*/
الطبقة العامة ImageUtil {
/**
* @param args
*/
public static void main(String[] args) {
String srcImgPath = "e:/2.png";
سلسلة أيقونة المسار = "e://logo.jpg";
String targetPath = "e:/3.jpg";
// أضف علامة مائية إلى الصورة
ImageUtil.waterMarkImageByIcon(iconPath, srcImgPath, targerPath, 0, 0,
، 0.1f)؛
// أضف علامة مائية إلى الصورة، تدوير العلامة المائية -45
// ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath,
// targetPath2, -45);
}
/**
* إضافة علامة مائية إلى الصورة وضبط زاوية دوران صورة العلامة المائية
*
* @param IconPath
* مسار صورة العلامة المائية
* @param srcImgPath
* مسار الصورة المصدر
* @param targetPath
* مسار الصورة المستهدفة
* @درجة المعلمة
* زاوية دوران صورة العلامة المائية
* عرض المعلمة
* العرض (مقارنة باليسار)
* @ ارتفاع المعلمة
* الارتفاع (مقارنة بالأعلى)
* @param الوضوح
* كلما اقتربت الشفافية (الرقم أقل من 1) من 0، زادت شفافيتها
*/
waterMarkImageByIcon باطلة عامة ثابتة (String iconPath، String srcImgPath،
سلسلة targerPath، درجة عدد صحيح، عرض عدد صحيح، ارتفاع عدد صحيح،
تعويم الوضوح) {
OutputStream os = null;
يحاول {
Image srcImg = ImageIO.read(new File(srcImgPath));
System.out.println("width:" + srcImg.getWidth(null));
System.out.println("الارتفاع:" + srcImg.getHeight(null));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// احصل على كائن الفرشاة
// الرسومات g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
// قم بتعيين معالجة الحواف الخشنة لمقاطع الخط
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION،
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
ز. رسم الصورة (
srcImg.getScaledInstance(srcImg.getWidth(خالية),
srcImg.getHeight(خالية)، Image.SCALE_SMOOTH)، 0، 0،
باطل)؛
إذا (خالية!= درجة) {
//ضبط دوران العلامة المائية
g.rotate(Math.toRadians(درجة)،
(مزدوج) buffImg.getWidth() / 2,
(مزدوج) buffImg.getHeight() / 2);
}
// مسار صورة العلامة المائية عادة ما يكون gif أو png، لذلك يمكن ضبط الشفافية.
ImageIcon imgIcon = new ImageIcon(iconPath);
// احصل على كائن الصورة.
الصورة img = imgIcon.getImage();
تعويم ألفا = الوضوح؛
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
ألفا))؛
// يشير إلى موقع صورة العلامة المائية
g.drawImage(img, width, height, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
os = new FileOutputStream(targerPath);
// توليد الصور
ImageIO.write(buffImg, "JPG", os);
System.out.println("اكتملت إضافة صورة العلامة المائية!");
} قبض (الاستثناء ه) {
printStackTrace();
} أخيراً {
يحاول {
إذا (فارغة!= نظام التشغيل)
os.Close();
} قبض (الاستثناء ه) {
printStackTrace();
}
}
}
/**
* إضافة علامة مائية إلى الصورة وضبط زاوية دوران صورة العلامة المائية
*
* @param logoText
* نص العلامة المائية
* @param srcImgPath
* مسار الصورة المصدر
* @param targetPath
* مسار الصورة المستهدفة
* @درجة المعلمة
* زاوية دوران صورة العلامة المائية
* عرض المعلمة
* العرض (مقارنة باليسار)
* @ ارتفاع المعلمة
* الارتفاع (مقارنة بالأعلى)
* @param الوضوح
* كلما اقتربت الشفافية (الرقم أقل من 1) من 0، زادت شفافيتها
*/
waterMarkByText العام الفارغ الثابت (String logoText، String srcImgPath،
سلسلة targerPath، درجة عدد صحيح، عرض عدد صحيح، ارتفاع عدد صحيح،
تعويم الوضوح) {
// مسار الصورة الرئيسية
InputStream = فارغ؛
OutputStream os = null;
يحاول {
Image srcImg = ImageIO.read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// احصل على كائن الفرشاة
// الرسومات g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
// قم بتعيين معالجة الحواف الخشنة لمقاطع الخط
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION،
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
ز. رسم الصورة (
srcImg.getScaledInstance(srcImg.getWidth(خالية),
srcImg.getHeight(خالية)، Image.SCALE_SMOOTH)، 0، 0،
باطل)؛
إذا (خالية!= درجة) {
//ضبط دوران العلامة المائية
g.rotate(Math.toRadians(درجة)،
(مزدوج) buffImg.getWidth() / 2,
(مزدوج) buffImg.getHeight() / 2);
}
//تعيين اللون
g.setColor(Color.red);
//تعيين الخط
g.setFont(new Font("宋体", Font.BOLD, 30));
تعويم ألفا = الوضوح؛
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
ألفا))؛
// المعلمة الأولى -> محتوى الإعداد، والمعلمتان التاليتان -> موضع الإحداثيات (x، y) للنص الموجود في الصورة.
g.drawString(logoText, width, height);
g.dispose();
os = new FileOutputStream(targerPath);
// توليد الصور
ImageIO.write(buffImg, "JPG", os);
System.out.println("اكتملت إضافة نص العلامة المائية!");
} قبض (الاستثناء ه) {
printStackTrace();
} أخيراً {
يحاول {
إذا (فارغة! = هو)
قريب () ؛
} قبض (الاستثناء ه) {
printStackTrace();
}
يحاول {
إذا (فارغة!= نظام التشغيل)
os.Close();
} قبض (الاستثناء ه) {
printStackTrace();
}
}
}
}
يوجد أيضًا كود لتغيير حجم الصورة:
انسخ رمز الكود كما يلي:
/**
* تحجيم الصورة (يتم تغيير حجم الصورة إلى الحجم المحدد بشكل متناسب، ويتم ملء الأجزاء الفارغة باللون الأبيض)
*
* @param srcPath
* مسار الصورة المصدر
* @param destPath
* مسار الصورة بعد القياس
*/
public static void ZoomImage(String srcPath, String destPath, int destHeight, int destWidth) {
يحاول {
BufferedImage srcBufferedImage = ImageIO.read(new File(srcPath));
int imgWidth = destWidth;
int imgHeight = destHeight;
int srcWidth = srcBufferedImage.getWidth();
int srcHeight = srcBufferedImage.getHeight();
إذا (srcHeight >= srcWidth) {
imgWidth = (int) Math.round(((destHeight * 1.0 / srcHeight) * srcWidth));
} آخر {
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));
} قبض (IOException ه) {
printStackTrace();
}
}