Перед чтением вам нужно сначала понять SpringMVC, а затем сначала посмотреть на картинку эффекта.
Написание кода
1. Связанные с ним пакеты
2. Файл конфигурации
web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee "//xmlns.jcp.org/xml/ns/javaee "//xmlns.jcp.org/xml/ns/javaee xsi: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/weece_3_1" 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> <bellest-file-file -list -list -list-stist -list-lak -list-il -list-il -list-il -list-lak -list-lak-ilist -listist-kattern>/</url-pattern> <selcoveryfile> index.jsp </wervedied-file> </werving-file-list> </web-app>
Springmvc.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://wwww.spramemema. http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-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/> <mvc: compontent-com Base-package = "com.wenteryan"> </context: component-scan> <bean> <name = "prefix" value = "/"> </property> <name = "Суффикс" value = ". jsp"> </property> <свойство = "viewClass" value = "org.spramework.web.servlet.view.JSTLS"/Bean> bean <//> bean. id = "multiprtesolver"> <name = "defaultendencoding" value = "utf-8"> </property> <name = "maxUploadSize" value = "10485760000"> </property> <Property Name = "maxinMemorySize" value = "40960"> </property> </bean </beans>
3. Напишите действие
Watermarkaction .action
пакет com.wenteryan.watermarkspringmvc; import javax.servlet.http.httpsession; import org.springframework.beans.factory.annotation.autowired; импорт org.springframework.nestoypype.controller; импорт org.spramework.web.bindtation org.springframework.web.bind.annotation.requestmethod; импорт org.springframework.web.bind.annotation.requestparam; импорт org.springframework.web.multipart.commons.commonsmultipartfile; import org.spramework.web.servlet.monsmultipartfile; import org.spramework.web.servlet.monsmultipartfile; import org.spramework.web.servlet.monsmultipartfil com.wenteryan.service.markservice; import com.wenteryan.service.uploadService; @ControllerPublic Class WaterMarkAction {Private MarkService MackService; private udloadService uploadService; @Requestmapping (value = "/watermark", method = requestMethod.post) public modelAndview Watermark (@RequestParam ("Image") CommonsMultipartFile, httpsession session) throws exection {string uploadpath = "/images"; String RealUploadPath = session.getServletContext (). GetRealPath (uploadPath); String imageUrl = uploadservice.uploadImage (файл, uploadpath, realuploadpath); String logoImageurl = mackservice.watermark (file, uploadpath, Realuploadpath); ModelandView ret = new ModelAndView (); ret.AddObject ("ImageUrl", ImageUrl); ret.AddObject ("LogoImageUrl", LogoImageUrl); ret.setViewName ("watermark"); вернуть вт; } @Autowired public void setmackservice (markservice mackservice) {this.mackservice = mackservice; } @Autowired public void setuploadService (uploadService uploadService) {this.UploadService = uploadService; }}4. Написать классы службы
Markservice .java
пакет com.wenteryan.service; импорт java.awt.color; import java.awt.font; импорт java.io.file; import org.springframework.web.multipart.commons.commonsmultipartfile; публичный интерфейс Markservice {public Static String Mark_Text = "veneryAn"; Public Static Final String font_Name = "Microsoft Yahei"; Public Static Final int font_size = 120; Public Static Final int font_stype = font.bold; Public Static Final Color font_color = color.red; общественный статический конечный финал int x = 10; общественный статический финал int y = 10; общественный статический поплавок альфа = 0,3F; public String Watermark (CommonsmultipartFile файл, String uploadPath, String RealUploadPath); }5. Написать классы реализации интерфейса
Uploadservice .java
Пакет com.wenteryan.service.impl; import java.io.fileoutputstream; импорт java.io.ioexception; import java.io.inputstream; импорт java.io.outputstream; импорт org.springframework.stepolype.service; импорт; org.springframework.web.multipart.commons.commonsmultipartfile; @servicepublic class uploadservice {public String uploadimage (commonsmultipartfile файл, string uploadpath, string RealuploadPath) {inputStream = null; OutputStream OS = null; try {is = file.getInputStream (); OS = new FileOutputStream (RealUploadPath+"/"+file.getoriginalfilename ()); Byte [] buffer = новый байт [1024]; int len = 0; while ((len = is.read (buffer))> 0) {os.write (buffer); }} catch (Exception e) {e.printstackTrace (); } наконец {if (is! = null) {try {as.close (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} if (os! = null) {try {os.close (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} return uploadpath+"/"+file.getoriginalfilename (); }}MarkServiceImpl. Java
пакет com.wenteryan.service.impl; import java.awt.alphacomposite; импорт java.awt.font; import java.awt.graphics2d; импорт java.awt.image; импорт java.awt.image.bufferedimage; импорт java.io.file; java.io.inputstream; импорт java.io.outputstream; import javax.imageio.imageio; импорт org.springframework.stepolype.service; импорт org.springframework.web.multipart.commons.commonsmultipartfile; importmage.Image.codec.jpeg.jpeg.jpeg.jpegmpegclartfile; импорт. com.sun.image.codec.jpeg.jpegimageEncoder; import com.wenteryan.service.markservice; @ServicePublic Class MarkServiceImpl реализует MarkService {@Override public String Watermark (CommonsMultipartFile, strypath, String realuadpath) {// tod-stube-strice-strice-strice-stryged-stube-stryged-stube-stryged-stube-stuber-stryged-stube-stube-stry-stryged-d LogOfilENAME = "logo"+file.getoriginalfilename (); OutputStream OS = null; try {image image2 = imageio.read (file.getInputStream ()); int width = image2.getWidth (null); int height = image2.getheight (null); BufferedImage bufferimage = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); Graphics2d g = bufferimage.creategraphics (); g.drawimage (Image2, 0, 0, ширина, высота, нулевая); g.setfont (новый шрифт (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 = высота-вершина1; 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.dispose (); OS = New FileOutputStream (RealUploadPath+"/"+LogOfilEName); Jpegimageencoder en = jpegcodec.createjpegenceder (os); en.encode (Bufferimage); } catch (Exception e) {e.printstackTrace (); } наконец {if (os! = null) {try {os.close (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} return uploadpath+"/"+logOfileName; } public int getTextLength (String Text) {int length = text.length (); for (int i = 0; i <text.length (); i ++) {string s = string.valueof (text.charat (i)); if (s.getbytes (). Length> 1) {length ++; }} длина = длина%2 == 0? Длина/2: длина/2+1; Длина возврата; }} 6. Напишите страницу
index.jsp
<form action = "watermark" method = "post" ectype = "multipart/form-data"> <h2>, пожалуйста, выберите загруженное изображение </h2> <div> <br> <input type = "file" name = "id =" image "/> </div> <viv> <br> <button =" Отправить "> uppult uplud
Watermark.jsp
<div> <img src = "$ {pagecontext.request.contextpath} $ {imageurl}"/> <img src = "$ {pagecontext.request.contextPath} $ {logoImageurl}"/> <a href = "$ {pagecontext.Request.context.context.context.context.context.context.context.context.context.context.context.context.context.context.context. </div>Суммировать
Java имеет специальный пакет обработки изображений, который также должен иметь возможность реализовать функцию Watermark. После проверки информации я обнаружил, что Java очень удобна для реализации водяных знаков. Водяным знаком может быть картинки или текст. На более поздней стадии будут водяные знаки. Если вам это понадобится в будущем, вы можете написать код для обработки собственных фотографий в партиях.
Выше приведено все об этой статье, я надеюсь, что для всех будет полезно изучать программирование Java.