오늘 저는 업로드 된 이미지를 워터 마크로 채워야 할 필요성이있었습니다. 온라인으로 오랫동안 검색하고 지정된 위치에 워터 마크를 설정했습니다. 다음 코드는 온라인에서 찾은 코드로 변환되었습니다. 효과 사진을 먼저 살펴 보겠습니다
구현 방법은 다음과 같습니다.
1 단계 : PS 또는 Meitu 소프트웨어를 사용하여 WaterMark 사진을 설계합니다.
2 단계 : 다음 코드를 클래스에 넣습니다.
패키지 org.platform.framework.commons.util; import java.awt.alphacomposite; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image; import java.awt.renderinghints; 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 { / ** Watermark Transparency* / private static float alpha = 0.5f; / ** 워터 마크 이미지 회전 각도*/ 개인 정적 이중 정도 = 0f; 개인 정적 int 간격 = 0; / ** * 워터 마크 매개 변수 설정, 설정없이 기본값을 사용하십시오 * @param alpha * 워터 마크 투명도 * @Param Degree * WaterMark 이미지 회전 각도 * * @param intermark * Watermark 이미지 간격 */ publy static void setimagemarkoptions (float alpha, int int intertal) {aLPHA! = 0.0f) {imageMarkUtil. } if (decc } if (interval! = 0f) {imageMarkUtil.interVal = 간격; }} / *** 이미지에 워터 마크 이미지 추가** @param waterimgpath* watermark image path* @param srcimgpath* 소스 이미지 경로* @param targetpath* target void watermarkbyimg (string static void watermarkbyimg, String srcimgpath, String targetpath) {WatermarkBith (WaterImgpath, srcimgpath,); } / *** 이미지에 워터 마크 이미지 추가** @param waterimgpath* watermark 이미지 경로* @param srcimgpath* 소스 이미지 경로* @param targetpath* target void watermarkbyimg (string waterimgpath, string srcimgpath) {watermarkgpath (waterimgpath, srcimg path, srcimg, 0); } catch (예외 e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} / *** 이미지에 워터 마크 이미지를 추가하고 워터 마크 이미지의 회전 각도를 설정하십시오* @param waterimgpath* 워터 마크 이미지 경로* @param srcimgpath* 소스 이미지 경로* @param targetpath* target image path* @param degreat* watermark 이미지 회전 각도* / public static void watermark byimg (String Waterimg Placeg). {outputStream os = null; try {image srcimg = imageio.read (새 파일 (srcimgpath)); bufferedImage buffimg = new bufferedImage (srcimg.getWidth (null), srcimg.getheight (null), bufferedImage.type_int_rgb); // 1. 브러시 개체를 가져옵니다. graphics2d g = buffimg.creategraphics (); // 2. 라인 세그먼트 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! = degree) {g.rotate (math.toradians (double), (double) buffimg.getWidth () / 2, (double) buffimg .getheight () / 2); } // 4. 워터 마크 이미지의 경로는 WaterMark 이미지가 일반적으로 GIF 또는 PNG이므로 투명도가 ImageICon Imgicon = New ImageICon (WaterImgPath)을 설정할 수 있습니다. // 5. 이미지 객체를 가져옵니다. 이미지 img = imgicon.getimage (); g.setcomposite (alphacomposite.getinstance (alphacomposite.src_atop, alpha)); // 6. 워터 마크 이미지의 위치는 (int height = intermal + imgicon.geticonHeight (); height <buffimg .getheight (); height = height = height = height = height + interval + imgicon.geticonheight ()) {(int weight = inter + imgicon.geticonwidth (); weight <buffimg (); ggetwidth (); imgicon.geticonwidth ()) {g.drawimage (img, weight -imgicon.geticonwidth (), height -imgicon.geticonheight (), null); }} g.setComposite (alphacomposite.getInstance (alphacomposite.src_over)); // 7. 리소스 g.dispose (); // 8. 이미지 생성 os = 새 파일 아웃 PutStream (TargerPath); imageio.write (buffimg, "jpg", os); System.out.println ( "이미지 완성 된 워터 마크 이미지 추가"); } catch (예외 e) {e.printstacktrace (); } 마침내 {try {if (null! = os) os.close (); } catch (예외 e) {e.printstacktrace (); }}} public static void main (String [] args) {System.out.println ( ".. WaterMark 이미지 추가 시작 ..."); /*** WaterMarkPath WaterMark 이미지 주소 UPLOADPATH 파일 주소를 성공적으로 업로드 한 후*//// 기본 매개 변수 수정 // imageMarkUtil.setimagemarkOptions (0.0f, 0, 20); //imagemarkutil.watermarkbyimg(watermarkpath, uploadpath); System.out.println ( ".. 끝에 워터 마크 이미지를 추가 ..."); }} 3 단계 : 업로드가 성공한 경우 다음과 같은 클래스를 호출하십시오.
/ *** WaterMarkPath WaterMark 이미지 주소* 업로드 파일 주소를 성공적으로 업로드 한 후*/ imageMarkUtil.WaterMarkByImg (WaterMarkPath, UploadPath); Watermark 간격이 너무 가깝다고 생각되면 다음 코드를 통해 간격을 설정할 수 있습니다. // 기본 매개 변수를 수정하면 imageMarkutil.setimagemarkoptions (0.0f, 0, 20); imageMarkUtil.WaterMarkByimg (WaterMarkPath, UploadPath);
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.