Aujourd'hui, j'ai rencontré le besoin de remplir l'image téléchargée avec des filigranes. J'ai recherché en ligne pendant longtemps et j'ai réglé le filigrane à l'emplacement spécifié. Le code suivant a été transformé par le code que j'ai trouvé en ligne. Jetons un coup d'œil à l'image d'effet d'abord
La méthode de mise en œuvre est discutée ci-dessous:
Étape 1: Utilisez un logiciel PS ou Meitu pour concevoir des images de filigrane, telles que:
Étape 2: Mettez le code suivant dans la classe:
Package org.platform.framework.commons.util; import java.awt.alphacomposite; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.aw java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import javax.imageio.ImageIO;import javax.swing.ImageIcon;import com.founder.cms.watermark.util.ImageMarkLogoUtil;/** * * Generate watermark* */public class ImageMarkUtil {/ ** Transparence de filigrane * / Float statique privé Alpha = 0,5f; / ** Angle de rotation de l'image de filigrane * / double degré statique privé = 0f; Interval Int statique privé = 0; / ** * Réglez les paramètres de watermark, utilisez la valeur par défaut sans régler * * @param alpha * Transparence du watermark * @param degré * Angle de rotation d'image du watermark * * @param intervalle * Intervalle d'image de watermark * / public static void setimagemarkoptions (float alpha, int, int interval) {if (alpha! = 0.0f) {alpha. } if (degré! = 0f) {ImageMarkutil.degree = degré; } if (interval! = 0f) {ImageMarkUtil.interval = interval; }} / ** * Ajoutez une image de filigrane à l'image * * @param waterimgpath * chemin d'image de watermark * @param srcimgpath * chemin d'image source * @param ciblePath * Target Image Path * / public static void watermarkbyImg (String WaterImgPath, string srcimgpath, string targetPath) exception {watermarkyImg (waterImgpath, srcimg TargetPath, 0); } / ** * Ajoutez une image de filigrane à l'image * * @param waterimgpath * chemin d'image de watermark * @param srcimgpath * chemin d'image source * @param ciblePath * Target Image Path * / public static void watermarkbygg (String WaterImgPath, string srcimgpath) {trot {watermarkgyg, waterImgpath, srcimgpath) {Try {watermarkg, waterAmgpAT 0); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }} / ** * Ajoutez une image de filigrane à l'image et définissez l'angle de rotation de l'image de filigrane * * @param waterimgpath * chemin d'image de watermark * @param srcimgpath * Path d'image source * @param ciblePath * Path cible * @param degree lance l'exception {OutputStream os = null; try {image srcimg = imageo.read (nouveau fichier (srcimgpath)); BufferedImage BuffImg = new BufferedImage (srcimg.getWidth (null), srcimg.getheight (null), bufferedImage.type_int_rgb); // 1. Obtenez l'objet Brush Graphics2d G = Buffimg.CreateGraphics (); // 2. Définissez le traitement des bords de déchaînement du segment de ligne g.setRenderingHint (RenderingHint.key_interpolation, RenderingHint.value_interpolation_bilinear); G.DrawImage (srcimg.getScaledInstance (srcimg.getWidth (null), srcimg .getheight (null), image.scale_smooth), 0, 0, null); // 3. Réglez la rotation du filigrane if (0! = Degré) {g.rotate (math.toradians (degré), (double) buffimg.getWidth () / 2, (double) buffimg .getheight () / 2); } // 4. Le chemin de l'image de filigrane L'image de filigrane est généralement gif ou png, afin que la transparence puisse être définie ImageIcon imgicon = new ImageIcon (waterImgpath); // 5. Obtenez l'objet image. Image img = imgicon.getImage (); g.setComposite (alphacomposite.getInstance (alphacomposite.src_atop, alpha)); // 6. L'emplacement de l'image de filigrane est pour (int height = interval + imgicon.getIconHeight (); height <buffMImg .GetHeight (); height = height + interval + imgicon.getiConHeight ()) {for (int Weight = Intercal IMGICON.GETICONWIDTH ()) {g.DrawImage (img, poids - imgicon.getIconWidth (), height - imgicon.getIconHeight (), null); }} g.setComposite (alphacomposite.getInstance (alphacomposite.src_over)); // 7. Libérez la ressource g.dispose (); // 8. Générer l'image OS = new FileOutputStream (TargerPath); Imageo.write (buffimg, "jpg", os); System.out.println ("Image terminée ajout de l'image de filigrane"); } catch (exception e) {e.printStackTrace (); } enfin {try {if (null! = os) os.close (); } catch (exception e) {e.printStackTrace (); }}} public static void main (String [] args) {System.out.println (".. commencez à ajouter l'image de filigrane ..."); / ** * WaterMarkPath WaterMark Adresse d'image UploadPath Adresse du fichier après un téléchargement réussi * / // Modifiez les paramètres par défaut // ImageMarkutil.SetImageMarkOptions (0.0f, 0, 20); //Imagemarkutil.watermarkbyImg(watermarkpath, uploadpath); System.out.println (".. Ajouter une image de filigrane pour terminer ..."); }} Étape 3: Lorsque le téléchargement réussit, appelez cette classe, comme:
/ ** * WaterMarkPath Watermark Image Adresse * Adresse du fichier UploadPath après réussite du téléchargement * / ImageMarkutil.watermarkByImg (WaterMarkPath, UploadPath); Si vous pensez que l'intervalle de filigrane est trop proche, vous pouvez définir l'intervalle via le code suivant: // Modifiez les paramètres par défaut ImageMarkutil.SetImageMarkOptions (0,0f, 0, 20); ImageMarkutil.watermarkbyImg (WatermarkPath, uploadpath);
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.