图片上传并生成缩略图

1.负责处理图形的bean:

// ---------------------------------------------------------------
package  bean;

import  javax.imageio.ImageIO;
import  javax.imageio.IIOException;
import  java.awt.image.BufferedImage;
import  java.awt.Image;
import  java.io.File;
import  java.awt.image.AffineTransformOp;
import  java.awt.geom.AffineTransform;

public   class  convertImage  {

    
    
private String fileInput ;
    
private String fileOutput ;
    
    
public convertImage()
    
{
        
    }

    
public String getFileInput() {
        
return fileInput;
    }

    
public void setFileInput(String fileInput) {
        
this.fileInput = fileInput;
    }

    
public String getFileOutput() {
        
return fileOutput;
    }

    
public void setFileOutput(String fileOutput) {
        
this.fileOutput = fileOutput;
    }

    
    
public void convert()
    
{
        
try {
            File fi 
= new File(fileInput); //大图文件
            File fo = new File(fileOutput); //将要转换出的小图文件
            int nw = 150//定义宽为150
            int nh = 100//定义高为100
            AffineTransform transform = new AffineTransform();
            BufferedImage bis 
= ImageIO.read(fi);
            
int w = bis.getWidth();
            
int h = bis.getHeight();

            
double sx = (double)nw/w;
            
double sy = (double)nh/h ;
            
//判断是横向图形还是坚向图形
            if ( w > h ) //横向图形
            {
                
if ( (int)(sx * h ) > nh  ) //比较高不符合高度要求,就按高度比例
                {
                    sx 
= sy ;
                    nw 
= (int)(w*sx) ;
                }

                
else
                
{
                    sy 
= sx ;
                    nh 
= (int)( h*sy) ;
                }

            }

            
else
            
{
                
if ( (int)(sy * w ) > nw ) 
                
{
                    sy 
= sx ;
                    nh 
= (int)(h * sy ) ;
                }

                
else
                
{
                    sx 
= sy ;
                    nw 
= (int)(w*sx) ;
                }

            }


            transform.setToScale(sx,sy);
            AffineTransformOp ato 
= new AffineTransformOp(transform,null);
            BufferedImage bid 
= new BufferedImage(nw,nh,BufferedImage.TYPE_3BYTE_BGR);
            ato.filter(bis,bid);
            ImageIO.write(bid,
"jpeg",fo);
        }
 
        
catch(Exception e) 
        
{
            e.printStackTrace();
        }

    }
    
}


2.上传文件的upload.jsp

<% @ taglib uri="/WEB-INF/struts-html.tld" prefix="html"  %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
  
< head >
    
    
< title > My JSP 'upload.jsp' starting page </ title >
    
    
< meta  http-equiv ="pragma"  content ="no-cache" >
    
< meta  http-equiv ="cache-control"  content ="no-cache" >
    
< meta  http-equiv ="expires"  content ="0" >
    
< meta  http-equiv ="keywords"  content ="keyword1,keyword2,keyword3" >
    
< meta  http-equiv ="description"  content ="This is my page" >
    
    
<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    
-->
  
</ head >
  
  
< body >
    
< html:form  action ="/upload.do"  enctype ="multipart/form-data" >
    
< html:file  property ="theFileone" />
    
< html:submit />
    
</ html:form >

  
</ body >
</ html >
//------------------------------------------------------------------------


3.显示成功页面

 

//------------------------------------------------------------------------
<% @ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<% @ page contentType="text/html;charset=GB2312"  %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
  
< head >
    
< base  href ="<%=basePath%>" >
    
    
< title > My JSP 'display.jsp' starting page </ title >
    
    
< meta  http-equiv ="pragma"  content ="no-cache" >
    
< meta  http-equiv ="cache-control"  content ="no-cache" >
    
< meta  http-equiv ="expires"  content ="0" >
    
< meta  http-equiv ="keywords"  content ="keyword1,keyword2,keyword3" >
    
< meta  http-equiv ="description"  content ="This is my page" >
    
    
<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    
-->
  
</ head >
  
  
< body >
  上传成功. 
< br >
  
</ body >
</ html >
//---------------------------------------------------------------------



4.Action 

 

// Created by MyEclipse Struts
//  XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.1/xslt/JavaClass.xsl

package  com.mk.struts.action;

import  java.io. * ;


import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

import  org.apache.struts.action.Action;
import  org.apache.struts.action.ActionForm;
import  org.apache.struts.action.ActionForward;
import  org.apache.struts.action.ActionMapping;
import  org.apache.struts.upload.FormFile;

import  com.mk.struts.form.UploadForm;

import  bean.convertImage;

/** 
 * MyEclipse Struts
 * Creation date: 03-28-2006
 * 
 * XDoclet definition:
 * @struts.action validate="true"
 
*/

public   class  UploadAction  extends  Action  {

    
// --------------------------------------------------------- Instance Variables

    
// --------------------------------------------------------- Methods

    
/** 
     * Method execute
     * 
@param mapping
     * 
@param form
     * 
@param request
     * 
@param response
     * 
@return ActionForward
     
*/

    
public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) 
{

        
// TODO Auto-generated method stub
        String encoding = request.getCharacterEncoding() ;
        
if ( (encoding != null )&& (encoding.equalsIgnoreCase("uft-8")))
        
{
            response.setContentType(
"text/html;charset=gb2312") ; //如果没有找定编码,编码格式设为gb2312            
        }

        
        UploadForm theForm 
= (UploadForm) form ;
        FormFile fileone 
= theForm.getTheFileone() ; //取得上传的文件名
        
        
try
        
{
            
//开始上传文件
            String filePath = this.getServlet().getServletContext().getRealPath("/") ; //取得当前路径
            InputStream stream = fileone.getInputStream() ; //把文件读入
            ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
            
            
/*
             * 建立一个上传文件的输出流如果是linux系统请把"/" 换成 "/"
             
*/

            OutputStream bos 
= new FileOutputStream(filePath + fileone.getFileName()) ;
            
            request.setAttribute(
"fileName",filePath + "/" + fileone.getFileName() ) ;
            
int bytesRead = 0 ;
            
byte[] buffer = new byte[8192] ;
            
while( (bytesRead = stream.read(buffer,0,8192) ) != -1  )
            
{
                bos.write(buffer,
0,bytesRead) ;
            }

            
            bos.close();
            stream.close() ;    
            
            
//上传文件完成
            String oldurl= filePath + fileone.getFileName() ;
            String newurl
= filePath + "min_" + fileone.getFileName() ;  //新的缩略图保存地址
            
            convertImage convert 
= new convertImage() ;
            convert.setFileInput(oldurl) ;
            convert.setFileOutput(newurl) ;
            convert.convert() ;
            
        }

        
        
catch(Exception e)
        
{
            System.err.print(e) ;
        }

        
return mapping.findForward("display");
    }


}

// ---------------------------------------------------------------------------


//其它的看Myeclipse+struts源文件,源代码下次传上,

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tangxingbin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值