Vor dem Lesen müssen Sie zuerst SpringMVC verstehen und dann zuerst das Effect -Bild ansehen.
Code schreiben
1. Importieren verwandte Pakete
2. Konfigurationsdatei
web.xml
<? XSI: Schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http id="WebApp_ID" version="3.1"> <display-name>watermarkspringmvc</display-name> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <Welcome-File> Index.jsp </Welcome-File> </Welcome-File-List> </web-App>
SpringMvc.xml
<? xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/sping/sping/sping/sping-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <mvc: Default-Servlet-handler/> <MVC: Annotation-driven/<contonent-Sc. Basis-Package = "com.wenteryan"> </context: component-scan> <bean> <Eigenschaft name = "prefix" value = "/"> </property> <Eigenschaft name = "suffix" value = ". jsp"> </property> <property name = "viewClass" value = "org.springFramework.webramework.web.web.Servlet.Servlet. <bean id="multipartResolver" > <property name="defaultEncoding" value="UTF-8"></property> <property name="maxUploadSize" value="10485760000"></property> <property name="maxInMemorySize" value="40960"></property> </bean></beans>
3. Schreiben Sie eine Aktion
Wasserzeichen
Paket com.wenteryan.watermarkspringMvc; import Javax.servlet.http.httpSession; org.springframework.bean.factory.Annotation.autowired; org. com.wenteryan.service.markService; import com.wenteryan.service.uploadservice; @ControllerPublic Class Watermarkace {privat markesservice mackservice; privatem Uploadservice Uploadservice; @RequestMapping (value = "/watermark", method = requestMethod.post) public modelAndView Watermark (@RequestParam ("Bild") CommonsMultiPartFile -Datei, httpSession Session) löst Ausnahme {String uploadPath = "/Images"; String RealUploadPath = session.getServletContext (). GetRealPath (UploadPath); String imageurl = uploadService.Uploadimage (Datei, UploadPath, RealUploadPath); String logoimageurl = mackService.watermark (Datei, UploadPath, RealUploadPath); ModelAndView ret = new ModelAndView (); Ret.AddObject ("ImageUrl", ImageUrl); ret.addObject ("logoimageurl", logoimageurl); ret.setViewName ("Watermark"); Return Ret; } @Autowired public void setMackService (markService mackService) {this.maccackService = mackService; } @Autowired public void setUploadService (UploadService UploadService) {this.UploadService = UploadService; }}4. Schreiben Sie Servicekurse
Markservice .Java
Paket com.wenteryan.service; import Java.awt.color; import Java.awt.font; import Java.io.file; import org.springframework public static Final String font_name = "Microsoft Yahei"; public static final int font_size = 120; public static final int font_stype = font.bold; öffentliche statische endgültige Farbe font_color = color.red; öffentliches statisches Finale int x = 10; öffentliche statische endgültige int y = 10; öffentliches statisches Float Alpha = 0,3F; Public String Watermark (CommonsMultipartFile -Datei, String UploadPath, String RealUploadPath); }
5. Schnittstellen -Implementierungsklassen schreiben
Uploadservice .java
Paket com.wenteryan.service.impl; import Java.io.FileOutputStream; Import Java.io.ioException; import Java.io.inputStream; import Java.io.outputStream; import org.springframework.stereotype.Service; Import; org.springframework.web.multipart.commons.commonsmultipartFile; @ServicePublic Class UploadService {public String uploadImage (commonsMultiPartFile -Datei, String -UploadPath, String realuploadPath) {inputStream is = null; OutputStream os = null; try {is = file.getInputStream (); os = new FileOutputStream (RealUploadPath+"/"+file.getOriginalFileName ()); byte [] buffer = neues byte [1024]; int len = 0; while ((len = is.read (puffer))> 0) {os.write (puffer); }} catch (Ausnahme e) {e.printstacktrace (); } endlich {if (ist! = null) {try {is.close (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }} if (os! = null) {try {os.close (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }} return uploadPath+"/"+file.getOriginalFileName (); }}MarkeserviceImpl .java
Paket com.wenteryan.service.impl; import Java.awt.Alphacomposite; Import Java.awt.font; Import Java.awt.graphics2d; Import Java.awt.image; java.io.inputstream; import java.io.outputstream; import Javax.imageo.imageo; import org.springframework.stereotype.service import org.spingframework com.sun.image.codec.jpeg.jpegimageCoder; import com.wenteryan.service "Logo"+file.getOriginalFileName (); OutputStream os = null; try {image image2 = imageio.read (file.getInputStream ()); int width = image2.getwidth (null); int Höhe = Image2.Getheight (null); Bufferedimage bufferimage = new bufferedImage (width, Höhe, bufferedimage.type_int_rgb); Graphics2d g = bufferimage.createGraphics (); G.Drawimage (Image2, 0, 0, Breite, Höhe, Null); g.setfont (neue Schriftart (font_name, font_stype, font_size)); g.setColor (font_color); int width1 = font_size*getTextLength (mark_text); int height1 = font_size; int widthdiff = width-width1; int heightdiff = Höhe-hohe Höhe1; int x = x; int y = y; if (x> widthdiff) {x = widthDiff; } if (y> heightDiff) {y = heightDiff; } G.SetComposite (alphacomposite.getInstance (alphacomposite.src_atop, alpha)); g.drawstring (mark_text, x, y+font_size); g.disponse (); os = new FileOutputStream (RealUploadPath+"/"+logoFileName); JpegimageCoder en = jpegCodec.createjpeNCODER (OS); en.code (bufferimage); } catch (Ausnahme e) {e.printstacktrace (); } endlich {if (os! = null) {try {os.close (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }} return UploadPath+"/"+logoFileName; } public int getTextLength (String -Text) {int länge = text.length (); für (int i = 0; i <text.length (); i ++) {string s = string.valueof (text.charat (i)); if (S.GetBytes (). Länge> 1) {Länge ++; }} Länge = Länge%2 == 0? Länge/2: Länge/2+1; Rücklauflänge; }} 6. Schreiben Sie eine Seite
index.jsp
<form action = "watermark" methode = "post" engType = "multiPart/form-data"> <h2> Bitte wählen Sie das hochgeladene Bild </h2> <div> <br> <Eingabe type = "Datei" name = "Bild" id = "Image"/> </div> </div> <br> </buttht type "> starten"> starten "> starten" upload </:
Watermark.jsp
<div> <img src="${pageContext.request.contextPath}${imageUrl }"/> <img src="${pageContext.request.contextPath}${logoImageUrl }"/> <a href="${pageContext.request.contextPath }">Return</a> </div>Zusammenfassen
Java verfügt über ein spezielles Bildverarbeitungspaket, das auch in der Lage sein sollte, die Wasserzeichenfunktion zu implementieren. Nachdem ich die Informationen überprüft hatte, stellte ich fest, dass Java für die Implementierung von Wasserzeichen sehr bequem ist. Das Wasserzeichen kann Bilder oder Text sein. In der späteren Phase wird es Wasserzeichen geben. Wenn Sie es in Zukunft benötigen, können Sie einen Code schreiben, um Ihre eigenen Bilder in Stapeln zu verarbeiten.
Das obige dreht sich alles um diesen Artikel. Ich hoffe, dass es für alle hilfreich sein wird, Java -Programme zu lernen.