วันนี้ฉันพบว่าต้องเติมภาพที่อัปโหลดด้วยลายน้ำ ฉันค้นหาออนไลน์เป็นเวลานานและตั้งค่าลายน้ำตามตำแหน่งที่กำหนด รหัสต่อไปนี้ถูกแปลงด้วยรหัสที่ฉันพบทางออนไลน์ มาดูภาพเอฟเฟกต์ก่อน
วิธีการใช้งานมีการกล่าวถึงด้านล่าง:
ขั้นตอนที่ 1: ใช้ซอฟต์แวร์ PS หรือ MEITU เพื่อออกแบบภาพลายน้ำเช่น:
ขั้นตอนที่ 2: ใส่รหัสต่อไปนี้ลงในคลาส:
แพ็คเกจ org.platform.framework.commons.util; นำเข้า java.awt.alphacomposite; นำเข้า java.awt.color; นำเข้า java.font; นำเข้า java.awt.graphics2d; นำเข้า Java.awt.image; java.io.file; นำเข้า java.io.fileoutputstream; นำเข้า java.io.inputstream; นำเข้า java.io.outputstream; นำเข้า Javax.imageio.imageio; นำเข้า Javax.swing.imageicon; { / ** ความโปร่งใสลายน้ำ* / ล่องลอยแบบคงที่แบบคงที่อัลฟ่า = 0.5f; / ** มุมการหมุนภาพลายน้ำ*/ เอกชนคงที่สององศา = 0f; ช่วงเวลาคงที่ส่วนตัว = 0; / ** * ตั้งค่าพารามิเตอร์ลายน้ำใช้ค่าเริ่มต้นโดยไม่ต้องตั้งค่า * * @param alpha * ความโปร่งใสลายน้ำ * @param องศา * มุมการหมุนภาพลายน้ำ * * @param Interval * ช่วงเวลาภาพลายน้ำ */ โมฆะสาธารณะ setimageMarkoptions } if (องศา! = 0f) {imageMarkutil.degree = องศา; } if (Interval! = 0f) {imageMarkutil.Interval = Interval; }} / *** เพิ่มภาพลายน้ำลงในภาพ** @param waterimgpath* เส้นทางภาพลายน้ำ* @param srcimgpath* เส้นทางภาพแหล่งที่มา* @param targetpath* เส้นทางภาพเป้าหมาย* / โมฆะสาธารณะคงที่ watermarkbyimg } / *** เพิ่มภาพลายน้ำลงในภาพ** @param waterimgpath* เส้นทางภาพลายน้ำ* @param srcimgpath* เส้นทางภาพแหล่งที่มา* @param TargetPath* เส้นทางภาพเป้าหมาย* / โมฆะสาธารณะแบบคงที่ watermarkbyimg } catch (exception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); }} / *** เพิ่มภาพลายน้ำลงในภาพและตั้งมุมการหมุนของภาพลายน้ำ** @param waterimgpath* เส้นทางภาพลายน้ำ* @param srcimgpath* เส้นทางภาพแหล่งที่มา* @param targetpath* เส้นทางภาพเป้าหมาย* @param @param OutputStream OS = NULL; ลอง {image srcimg = imageio.read (ไฟล์ใหม่ (srcimgpath)); bufferedImage buffimg = new bufferedImage (srcimg.getWidth (null), srcimg.getheight (null), bufferedimage.type_int_rgb); // 1. รับ brush object graphics2d g = buffimg.createGraphics (); // 2. ตั้งค่าการประมวลผลขอบ jagged ของส่วนบรรทัด 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); // 3. ตั้งค่าการหมุนลายน้ำถ้า (0! = องศา) {g.rotate (math.toradians (องศา), (สองครั้ง) buffimg.getWidth () / 2, (สอง) Buffimg. -getheight () / 2); } // 4. เส้นทางของภาพลายน้ำภาพลายน้ำโดยทั่วไปคือ GIF หรือ PNG เพื่อให้ความโปร่งใสสามารถตั้งค่า ImageIcon imgicon = ใหม่ ImageIcon (WaterimgPath); // 5. รับวัตถุภาพ Image IMG = imgicon.getImage (); G.SetComposite (alphacomposite.getInstance (alphacomposite.src_atop, alpha)); // 6. ตำแหน่งของภาพลายน้ำสำหรับ (ความสูง int = ช่วงเวลา + imgicon.geticonHeight (); ความสูง <buffimg. -getheight (); ความสูง = ความสูง + ช่วงเวลา imgicon.geticonwidth ()) {g.drawimage (img, น้ำหนัก - imgicon.geticonwidth (), ความสูง - 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 เสร็จสิ้นการเพิ่มภาพลายน้ำ"); } catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (null! = os) os.close (); } catch (exception e) {e.printstacktrace (); }}} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (".. เริ่มเพิ่มภาพลายน้ำ ... "); /*** WatermarkPath ที่อยู่ภาพ Watermark Image uploadPath หลังจากการอัปโหลดสำเร็จ*/// แก้ไขพารามิเตอร์เริ่มต้น // 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 มากขึ้น