Hari ini saya menemukan kebutuhan untuk mengisi gambar yang diunggah dengan tanda air. Saya mencari secara online untuk waktu yang lama dan mengatur tanda air di lokasi yang ditentukan. Kode berikut diubah oleh kode yang saya temukan online. Mari kita lihat gambar efeknya terlebih dahulu
Metode implementasi dibahas di bawah ini:
Langkah 1: Gunakan perangkat lunak PS atau Meitu untuk merancang gambar tanda air, seperti:
Langkah 2: Masukkan kode berikut ke dalam kelas:
Paket org.platform.framework.Commons.util; impor java.awt.alphacomposite; impor java.awt.color; impor java.awt.font; impor java.awt.graphics2d; impor java.awt.image; impor java.awt.renderinghints; java.io.file; impor java.io.fileoutputStream; impor java.io.inputstream; impor java.io.outputStream; impor javax.imageio.imageio; import javax.swing.imageicon; import com.founder.cms.watermark.util.imagemarkas; { / ** Watermark Transparency* / Private Static Float Alpha = 0,5F; / ** Sudut Rotasi Gambar Watermark*/ Private Static Double Degre = 0F; interval int statis pribadi = 0; / ** * Atur parameter tanda air, gunakan nilai default tanpa pengaturan * * @param alpha * transparansi watermark * @param derajat * sudut rotasi gambar watermark * * @param interval * interval gambar watermark */ public static void setimagemarkoptions (float alpha, int derajat, int interval) {if (if (ifa! } if (derajat! = 0f) {ImageMarkutil.degree = derajat; } if (interval! = 0f) {ImageMarkutil.interval = interval; } } /** * Add a watermark image to the image* * @param waterImgPath * Watermark image path* @param srcImgPath * Source image path* @param targetPath * Target image path*/ public static void waterMarkByImg(String waterImgPath, String srcImgPath, String targetPath) throws Exception { waterMarkByImg(waterImgPath, srcImgPath, TargetPath, 0); } / *** Tambahkan gambar tanda air ke gambar** @param waterimgpath* jalur gambar watermark* @param srcimgpath* jalur gambar sumber* @param targetPath* jalur gambar target* / public static watermarkbyimg (string waterimgpath, string srcimgpath) {try {waterMarkByimg (string waterimgath, string srcimgpath) {try {watermarkbyimg (string, string srcimgpath) {try {waterMarkByImg 0); } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); } } /** * Add a watermark image to the image, and set the rotation angle of the watermark image* * @param waterImgPath * Watermark image path* @param srcImgPath * Source image path* @param targetPath * Target image path* @param degree * Watermark image rotation angle*/ public static void waterMarkByImg(String waterImgPath, String srcImgPath, String targetPath, double derajat) melempar pengecualian {outputStream os = null; coba {gambar srcimg = imageIo.read (file baru (srcimgpath)); BufferedImage buffimg = baru buferedImage (srcimg.getWidth (null), srcimg.getheight (null), bufferedimage.type_int_rgb); // 1. Dapatkan Objek Sikat Graphics2d G = BuffImg.Creategraphics (); // 2. Atur pemrosesan tepi bergerigi dari segmen garis 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. Atur rotasi watermark if (0! = Derajat) {g.rotate (math.toradians (derajat), (ganda) buffimg.getWidth () / 2, (ganda) buffimg .getheight () / 2); } // 4. Jalur gambar tanda air gambar watermark umumnya gif atau png, sehingga transparansi dapat diatur Imageicon imgicon = gambar baru (waterimgpath); // 5. Dapatkan objek gambar. Gambar img = imgicon.getImage (); g.setComposite (alphacomposite.getInstance (alphacomposite.src_atop, alpha)); // 6. Lokasi gambar tanda air adalah untuk (int tinggi = interval + imgicon.geticonHeight (); tinggi <buffimg .getHeight (); tinggi = tinggi + interval + imgicon.geticonHeight ()) {untuk (int weight = interval + imgicon.geticonwidth (); weighth -bobfim (bobothget (bobothget (bobote = iMGICON.geticonwidth (); weighth (bobotthth (bobotth = bobot = bobote = iMGICON.geticonwidth (); weighth (); weighth (bobothget (bobote = bobot = bobot = bobote = imgicon.geticonwidth (); weight (); weight (bobots = bobote = bobote = IMGICON. imgicon.geticonWidth ()) {g.drawimage (img, bobot - imgicon.geticonWidth (), tinggi - imgicon.geticonheight (), null); }} g.setComposite (alphacomposite.getInstance (alphacomposite.src_over)); // 7. Lepaskan sumber daya G.Dispose (); // 8. Hasilkan gambar OS = FileOutputStream baru (TargerPath); Imageo.write (Buffimg, "JPG", OS); System.out.println ("Gambar Selesai Menambahkan Watermark Image"); } catch (Exception e) {E.PrintStackTrace (); } akhirnya {coba {if (null! = os) os.close (); } catch (Exception e) {E.PrintStackTrace (); }}} public static void main (string [] args) {System.out.println (".. Mulai menambahkan gambar tanda air ..."); /*** WATERMARKPATH Alamat gambar WATERMARK UPLOADPATH ALAMAT FILE Setelah berhasil mengunggah*/// Ubah parameter default // ImageMarkutil.setImageMarkOptions (0.0f, 0, 20); //Imagemarkutil.watermarkbyimg(watermarkpath, unggahpath); System.out.println (".. tambahkan gambar tanda air ke akhir ..."); }} Langkah 3: Di mana unggahan berhasil, panggil kelas ini, seperti:
/ *** Alamat gambar watermarkpath watermark* UploadPath alamat file setelah unggah yang berhasil*/ imagemarkutil.watermarkbyimg (watermarkpath, unggahpath); Jika Anda berpikir interval tanda air terlalu dekat, Anda dapat mengatur interval melalui kode berikut: // Ubah parameter default ImageMarkutil.setimagemarkoptions (0,0f, 0, 20); ImageMarkutil.WaterMarkByImg (WatermarkPath, UploadPath);
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.