在JSP中怎么给图片加水印如题 谢谢了

在JSP中怎么给图片加水印如题 谢谢了,第1张

水印: 这是一个用Photoshop的图层模式规则重复水印的方法,效果挺不错,而且也不复杂。天极设计在线特别提醒:本例的关键 *** 作是水印取样和图层模式的运用。 1、用Photoshop打开要去掉水印的图片。 2、按快捷键M 切换到选择工具。 3、按着鼠标拖动选择要去掉的水印。 4、按快捷键 Ctrl+J 把第三步选择的水印建立一个新的图层。 5、移动新建的图层可见水印图层 6、再选择图层模式为颜色减淡。 7、再按快捷键 Ctrl+i 把图层改为反相状态 8、移动水印图层对准底图上的水印即可完成 9、复制水印图层复盖底图的水印就可去除所有水印 去水印: 选择仿制图章工具 ,并在选项栏中执行下列 *** 作: 选取画笔和设置画笔选项。(请参阅使用画笔。) 指定混合模式、不透明度和流量。(请参阅设置绘画和编辑工具的选项。) 确定想要对齐样本像素的方式。如果选择“对齐的”,您可以松开鼠标按钮,当前的取样点不会丢失。这样,无论您多少次停止和继续绘画,都可以连续应用样本像素。如果取消选择“对齐的”,则每次停止和继续绘画时,都将从初始取样点开始应用样本像素。 选择“用于所有图层”可以从所有可视图层对数据进行取样;取消选择“用于所有图层”将只从现用图层取样。 通过在任意打开的图像中定位指针,然后按住 Alt 键并点按 (Windows) 或按住 Option 键并点按 (Mac OS) 来设置取样点。 注释:如果要从一幅图像中取样并应用到另一图像,则这两幅图像的颜色模式必须相同。 在图像中拖移。 图案图章工具使您可以用图案绘画。可以从图案库中选择图案或者创建您自己的图案。

Java给图片加水印

/**

* 方法描述:<b>给图片增加水印.</b></br>

* 备 注: 在图片上写字符串

* 创 建 人: bo.gaobo</br>

* 创建日期: 2012-09-07</br>

* @param originalUrl 原始图片存储路径

* @param oldImg 原图片

* @param str 增加的字符串

* @param xLocation x坐标

* @param yLocation y坐标

* @param fontColor 颜色

* @param fontSize 字号

* @param typeFace 字体

* @param fileType 文件类型

*/

public static BufferedImage addStringToImg(String originalUrl, BufferedImage oldImg,String str,int xLocation,int yLocation, Color fontColor, int fontSize, String typeFace, String fileType) throws IOException{

FileOutputStream output = new FileOutputStream(originalUrl)

BufferedImage buffImg = oldImg

Graphics2D g = buffImg.createGraphics()

g = buffImg.createGraphics()

g.drawImage(buffImg, null, 0, 0)

g.setColor(fontColor)//设置字体颜色

g.setFont(new Font(typeFace, Font.PLAIN, fontSize))//设置字体和字号

g.drawString(str, xLocation, yLocation)//把字符串放在对应的坐标处

g.dispose()

ImageIO.write(buffImg, fileType, output)//设置文件类型

output.close()

return buffImg

}

用过滤器,等我上线给你,不要结问题哦

package com.jc.ts.services

import java.awt.Color

import java.awt.Graphics

import java.awt.Image

import java.awt.image.BufferedImage

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.IOException

import javax.imageio.ImageIO

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import com.sun.image.codec.jpeg.ImageFormatException

import com.sun.image.codec.jpeg.JPEGCodec

import com.sun.image.codec.jpeg.JPEGImageEncoder

/**

*添加图片水印的服务类

* */

public class WaterMark {

/**

* @param sizeContext添加水印文字

* @param request 请求流对象

* @param request 响应流对象

* */

@SuppressWarnings("deprecation")

public static void createMarkSize(String sizeContext,HttpServletRequest request,HttpServletResponse response) {

try {

String path=request.getRealPath(request.getServletPath())

FileInputStream in=new FileInputStream(path)

Image src=ImageIO.read(in)

int w=src.getWidth(null)

int h=src.getHeight(null)

BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB)//构建画板

Graphics g=img.getGraphics()//得到画笔

g.drawImage(src,0,0,w,h,null)//把源图片写入画板

g.setColor(Color.red)

g.drawString(sizeContext,10,5) // 添加文字

g.dispose()//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream())

e.encode(img)

response.getOutputStream().close()

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

/**

* @param localPath 添加水印LOGO路径

* @param request 请求流对象

* @param request 响应流对象

**/

@SuppressWarnings("deprecation")

public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response) {

try {

FileInputStream file=new FileInputStream(localPath)

Image fimg=ImageIO.read(file)

int fw=fimg.getWidth(null)

int fh=fimg.getHeight(null)

String path=request.getRealPath(request.getServletPath())

FileInputStream in=new FileInputStream(path)

Image src=ImageIO.read(in)

int w=src.getWidth(null)

int h=src.getHeight(null)

BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB)//构建画板

Graphics g=img.getGraphics()//得到画笔

g.drawImage(src,0,0,w,h,null)//把原图片写入画板

g.drawImage(fimg,w-20,h-15,fw,fh,null)//把水印图片写入画板

g.dispose()//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream())

e.encode(img)

response.getOutputStream().close()

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

/**

* @param localPath 添加水印图片路径

* @param request 请求流对象

* @param request 响应流对象

* @param width 水印图片的宽度

* @param height 水印图片的长度

**/

@SuppressWarnings("deprecation")

public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response,int width,int height) {

try {

FileInputStream file=new FileInputStream(localPath)

Image fimg=ImageIO.read(file)

int fw=fimg.getWidth(null)

int fh=fimg.getHeight(null)

String path=request.getRealPath(request.getServletPath())

FileInputStream in=new FileInputStream(path)

Image src=ImageIO.read(in)

int w=src.getWidth(null)//w为你过滤图片的宽度

int h=src.getHeight(null)//h为你过滤图片的长度

BufferedImage img=new BufferedImage(w+width,h+height,BufferedImage.TYPE_INT_RGB)//构建画板(画板的宽度为两个图片之和)

Graphics g=img.getGraphics()//得到画笔

g.drawImage(src,0,0,w,h,null)//把原图片写入画板

g.drawImage(fimg,width,height,fw,fh,null)//把水印图片写入画板

g.dispose()//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream())

e.encode(img)

response.getOutputStream().close()

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

注意第三个方法的注释地方g.drawImage(fimg,width,height,fw,fh,null)根据参数你在调调(放原图下面的)

过滤器调用

package com.jc.ts.filter

import java.io.IOException

import javax.servlet.Filter

import javax.servlet.FilterChain

import javax.servlet.FilterConfig

import javax.servlet.ServletException

import javax.servlet.ServletRequest

import javax.servlet.ServletResponse

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import com.jc.ts.services.WaterMark

public class WaterFilter implements Filter {

public void destroy() {

// TODO Auto-generated method stub

}

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request=(HttpServletRequest)arg0

HttpServletResponse response=(HttpServletResponse)arg1

//WaterMark.createMarkSize("南京ts", request, response)

//WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response)

WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response,20,30)

//注意路径为绝对路径且三个效果不能同时执行

}

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

}

web.xml配置(写在servlet上面)

<filter>

<description>This is the description of my J2EE component</description>

<display-name>This is the display name of my J2EE component</display-name>

<filter-name>WaterFilter</filter-name>

<filter-class>com.jc.ts.filter.WaterFilter</filter-class>

</filter>

希望你能满意。。。。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11694116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存