int color=0xffffff; String colorStr=request.getParameter("color"); if(colorStr!=null){ try{ color=Integer.parseInt(colorStr); }catch(Exception e){ System.out.println(e.toString()); } } Color fontColor=new Color(color); Font font=new Font(fontStr,style,size);
Rectangle2D bounds=font.getStringBounds(caption,g.getFontRenderContext()); int x=(int)((outputImage.getWidth()-bounds.getWidth())/2); int y=(int)(bounds.getHeight());
缩略图水印组件wsImage3.0
功能特点:
1、导入多种图片格式,目前支持BMP,JPG,GIF等。
2、输出JPG格式缩略图,自定义输出压缩参数
3、高效率生成缩略图,4种导出方式,方便灵活。
4、图片裁减功能,自定义裁减区域。
5、能购获取图片尺寸。
6、支持文字水印,可自定义字体、颜色、旋转角度等。
7、支持图片水印,图片水引支持透明度。
8、顺代码实现,无须任何运行库,无须GDI+库。
9、在WIN98,WIN2000,WIN2003等操作系统上均测试通过。
10、性能更稳定,消耗系统资源少。
http://www.wave12.com
/*
* ImageCaptionServlet.java
*
* Created on 2005年2月20日, 下午10:16
*/package OAServlet.ImageServlet;import java.io.*;
import java.net.*;import javax.servlet.*;
import javax.servlet.http.*;import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import com.sun.image.codec.jpeg.*;
/**
*
* @author LongRiver
* @version
*/
public class ImageCaptionServlet extends HttpServlet implements ImageObserver {
/** Initializes the servlet.
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
/** Destroys the servlet.
*/
public void destroy() {
}
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
HttpSession session=request.getSession();
BufferedImage buffImage=(BufferedImage)session.getAttribute("image");
if(buffImage==null){ //如果没有图象,创建一个
buffImage=new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);
}
BufferedImage outputImage=new BufferedImage(buffImage.getWidth(),buffImage.getHeight(),BufferedImage.TYPE_INT_RGB);
Graphics2D g=(Graphics2D)outputImage.getGraphics();
g.drawImage(buffImage,0,0,this);
String caption=request.getParameter("caption");
if(caption==null)caption="<<标题>>";
String location=request.getParameter("location");
if(location==null)location="bottom";
String fontStr=request.getParameter("font");
if(fontStr==null)fontStr="times";
int style=Font.PLAIN;
String styleStr=request.getParameter("style");
if(styleStr.equals("italic"))style=Font.ITALIC;
if(styleStr.equals("bold"))style=Font.BOLD;
int size=8;
String sizeStr=request.getParameter("size");
if(sizeStr!=null){
try{
size=Integer.parseInt(sizeStr);
}catch(Exception e){
}
}
int color=0xffffff;
String colorStr=request.getParameter("color");
if(colorStr!=null){
try{
color=Integer.parseInt(colorStr);
}catch(Exception e){
System.out.println(e.toString());
}
}
Color fontColor=new Color(color);
Font font=new Font(fontStr,style,size);
Rectangle2D bounds=font.getStringBounds(caption,g.getFontRenderContext());
int x=(int)((outputImage.getWidth()-bounds.getWidth())/2);
int y=(int)(bounds.getHeight());
if(location.equals("bottom")){
y=outputImage.getHeight()-1;
}
g.setColor(fontColor);
g.setFont(font);
g.drawString(caption,x,y);
response.setContentType("image/jpeg;charset=gb2312");
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(response.getOutputStream());
encoder.encode(outputImage);
}
public boolean imageUpdate(Image img,int infoFlags,int x,int y,int width,int height){
return false;
}
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
}
File file = new File(ImgName);
Image src = ImageIO.read(file);
int wideth=src.getWidth(null);
int height=src.getHeight(null);
BufferedImage image=new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
Graphics g=image.createGraphics();
g.drawImage(src,0,0,wideth,height,null); //水印文件
File file_yin = new File(...);
Image yin = ImageIO.read(file_yin);
int width_yin=yin.getWidth(null);
int height_yin=yin.getHeight(null);
g.drawImage(yin,wideth-110,height-110,width_yin,height_yin,null); ///
g.dispose();
FileOutputStream out=new FileOutputStream(ImgName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
catch(Exception e){
System.out.println(e);
}
}
???????????????????
楼上的........已经好长时间了..是你忙忘了,还是...xxxxx啊??