واجهت اليوم حاجة لملء الصورة التي تم تحميلها مع العلامات المائية. لقد بحثت عبر الإنترنت لفترة طويلة ووضعت العلامة المائية في الموقع المحدد. تم تحويل الرمز التالي بواسطة الرمز الذي وجدته عبر الإنترنت. لنلقي نظرة على صورة التأثير أولاً
تمت مناقشة طريقة التنفيذ أدناه:
الخطوة 1: استخدم برنامج PS أو Meitu لتصميم صور مائية ، مثل:
الخطوة 2: ضع الكود التالي في الفصل:
package org.platform.framework.commons.util ؛ استيراد java.awt.alphacomposite ؛ استيراد java.awt.color ؛ استيراد java.awt.font ؛ import java.awt.graphics2d ؛ import java.awt java.io.file ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.inputstream ؛ استيراد java.io.outputStream ؛ استيراد javax.imageio.imageio ؛ استيراد javax.swing.imageicon ؛ استيراد com.founder.cms.watermark.Util.Util.Util.UMAGOTIL ؛ { / ** الشفافية المائية* / alpha الثابتة الخاصة = 0.5f ؛ / ** زاوية دوران صورة العلامة المائية*/ درجة مزدوجة ثابتة = 0f ؛ الفاصل الزمني الثابت الخاص = 0 ؛ / ** * تعيين معلمات العلامة المائية ، استخدم القيمة الافتراضية بدون إعداد * * param alpha * الشفافية المائية * param درجة * زاوية دوران الصورة المائية * * param الفاصل الزمني * الفاصل الزمني للعلام المائي */ public static void setimagemarkoptions (float alpha ، int interal) {if (alpha! } if (درجة! = 0f) {ImageMarkutil.degree = درجة ؛ } if (الفاصل الزمني! = 0f) {ImageMarkUtil.Interval = الفاصل الزمني ؛ }} / *** أضف صورة مائية إلى الصورة** param waterimgpath* مسار الصورة المائية* param srcimgpath* مسار الصورة المصدر* param targatpath* مسار الصورة الهدف* / public static void watermarkbyimg (string waterimgpath ، string srcimgpath ، string targpath) throws {watermarkbyimg (waterimgpath ، srcimpath ، } / *** أضف صورة علامة مائية إلى الصورة** param waterimgpath* مسار صورة ماء* param srcimgpath* مسار الصورة المصدر* param targatpath* مسار الصورة الهدف* / public static void watermarkbyimg (String waterimgpath ، String srcimgpath) } catch (استثناء e) {// todo catch e.printstacktrace () ؛ ستر {outputStream OS = NULL ؛ حاول {image srcimg = imageio.read (ملف جديد (srcimgpath)) ؛ BufferedImage buffimg = جديد bufferedImage (srcimg.getwidth (null) ، srcimg.getheight (null) ، bufferedImage.type_int_rgb) ؛ // 1. احصل على كائن الفرشاة Graphics2d g = buffimg.creategraphics () ؛ . G.DrawImage (srcimg.getScaledInstance (srcimg.getwidth (null) ، srcimg .getheight (null) ، image.scale_smooth) ، 0 ، 0 ، null) ؛ // 3. قم بتعيين دوران العلامة المائية إذا (0! = درجة) {g.rotate (Math.Toradians (درجة) ، (مزدوج) buffimg.getWidth () / 2 ، (مزدوج) buffimg .getheight () / 2) ؛ } // 4. مسار صورة العلامة المائية تكون صورة العلامة المائية عمومًا GIF أو PNG ، بحيث يمكن ضبط الشفافية Imgicon = new ImageIcon (WaterimgPath) ؛ // 5. احصل على كائن الصورة. صورة IMG = IMGICON.GETIMAGE () ؛ G.SetComposite (Alphacomposite.getInstance (Alphacomposite.src_atop ، alpha)) ؛ // 6. موقع صورة العلامة المائية هو (ارتفاع int = الفاصل الزمني + imgicon.geticonheight () ؛ الارتفاع <buffimg .getheight () ؛ الارتفاع = الارتفاع + الفاصل الزمني + imgicon.geticonheight ()) {for (int weight = interal + imgicon.geticonwid () ؛ buffimg. imgicon.geticonwidth ()) {g.drawImage (img ، weight - imgicon.geticonwidth () ، height - imgicon.geticonheight () ، null) ؛ }} g.setComposite (alphacomposite.getInstance (Alphacomposite.src_over)) ؛ // 7. إطلاق المورد G.Dispose () ؛ // 8. إنشاء صورة OS = جديد fileOutputStream (TargerPath) ؛ Imageio.write (Buffimg ، "JPG" ، OS) ؛ System.out.println ("Image Hinged إضافة صورة مائية") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {try {if (null! = os) os.close () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }}} public static void main (string [] args) {system.out.println (".. ابدأ إضافة صورة علامة مائية ...") ؛ /*** Watermarkpath Watermark Image Odvation عنوان ملف exploadpath بعد التحميل الناجح* // تعديل المعلمات الافتراضية // ImageMarkutil.setImageMarkOptions (0.0F ، 0 ، 20) ؛ //imagemarkutil.watermarkbyimg(watermarkpath ، uploadpath) ؛ System.out.println (".. إضافة صورة مائية إلى النهاية ...") ؛ }} الخطوة 3: حيث ينجح التحميل ، اتصل بهذا الفصل ، مثل:
/ *** عنوان الصورة المائية Watermarkpath* عنوان ملف UploadPath بعد التحميل الناجح*/ ImageMarkutil.watermarkbyimg (WatermarkPath ، UploadPath) ؛ إذا كنت تعتقد أن الفاصل الزمني للعلامة المائية قريبة جدًا ، فيمكنك تعيين الفاصل الزمني من خلال الكود التالي: // تعديل المعلمات الافتراضية ImageMarkutil.setImageMarkOptions (0.0F ، 0 ، 20) ؛ ImageMarkutil.Watermarkbyimg (WatermarkPath ، UploadPath) ؛
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.