jspsmart官网_servletjsp.jar_jspsmart.jar(3)

电脑杂谈  发布时间:2017-01-21 15:24:06  来源:网络整理

文件目录:

uploadfile文件会将文件提交给net.iesun.util.Images类:

<span style="font-size:18px;">package net.iesun.util;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.color.*;

import javax.imageio.*;
import javax.imageio.stream.*;
import javax.imageio.metadata.*;
import javax.servlet.jsp.PageContext;

import org.w3c.dom.*;

import java.awt.Rectangle;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;




import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;

import com.jspsmart.upload.File;
import com.jspsmart.upload.SmartUpload;

public class Images {

	public static String upload(String rootdir,String sPath,String FileName,PageContext pagecontext)
	{
		if(sPath==null)sPath="/upload";
		if(sPath.equals(""))sPath="/upload";
		if(FileName==null)FileName="";

		if(rootdir.equals(""))rootdir=pagecontext.getServletContext().getRealPath("/");
		
		String rpath=rootdir+"/"+sPath;		
		java.io.File f = new java.io.File(rpath);
		if(!f.exists())f.mkdirs();
		
		rpath=f.getPath();
		
		try {
		SmartUpload mySmartUpload = new SmartUpload();
		mySmartUpload.initialize(pagecontext);
		//mySmartUpload.initialize(config, request, response);
		mySmartUpload.setMaxFileSize(20480 * 1024);
		mySmartUpload.setAllowedFilesList("jpg,JPG,gif,GIF,png,PNG,jpeg,JPEG,bmp,BMP,tif,TIF,tiff,TIFF,swf,SWF,flv,FLV,doc,DOC,txt,TXT,xls,CLS,csv,CSV,ppt,PPT,zip,ZIP,rar,RAR");

			mySmartUpload.upload();
			File myFile = mySmartUpload.getFiles().getFile(0);
			
			if (!myFile.isMissing()) {
				if(FileName.equals(""))FileName=myFile.getFileName();
				if(FileName.equals(""))
				{
				Date currTime = new Date();
				SimpleDateFormat formatter2 = new SimpleDateFormat("yyyyMMddhhmmssSSS", Locale.US);
				FileName = new String((formatter2.format(currTime)).getBytes("iso-8859-1"));
				}
				String ext = myFile.getFileExt();
				FileName = FileName + "." + ext;				
				myFile.saveAs(rpath + "/" + FileName,mySmartUpload.SE_AUTO);
			}
			//response.sendRedirect("/uploadimage.jsp?Picurl="+ FileName + "&step=2");
		} catch (Exception e) {
			e.printStackTrace();
			return "ERR:"+e.getMessage();
		}
		return FileName;
	}	
	
	/**
	 * 获取文件扩展名
	 * @param file
	 * @return
	 */
	public static String getFileExt(String fileName) {
		if (fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0) {
			return fileName.substring(fileName.lastIndexOf(".") + 1);
		} else {
			return "";
		}
	}


	public static void ResizeImage(String SourceFile,String TargetFile,int nw,int nh){
	try
	{
		//System.out.println("生成缩略图源文件"+SourceFile);
		java.io.File file = new java.io.File(SourceFile); //读入文件
		if(!file.exists())return;
		BufferedImage img=null;
		try
		{
		img=javax.imageio.ImageIO.read(file);
		}
		catch(Exception e)
		{
			img=readImage(file);
		}		
		
		int h = img.getHeight();
		int w = img.getWidth();
		//System.out.println("生成目标缩略图"+TargetFile);
		FileOutputStream out=new FileOutputStream(TargetFile); //输出到文件流
		

		if(nw==0&&nh==0)nw=80;
		if(nw==0)nw=w*nw/h;
		if(nh==0)nh=h*nw/w;

		//java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
        BufferedImage dest = new BufferedImage(nw, nh,BufferedImage.TYPE_INT_RGB);//TYPE_4BYTE_ABGR);
		dest.getGraphics().drawImage(img,0,0,nw, nh,null);
		
		ImageIO.write(dest, "jpg", out);
		
		out.close();
		/*
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
		encoder.encode(dest); //近JPEG编码     
		out.close();
		*/
		
	}
	catch(Exception e)
	{
		e.printStackTrace();
		System.out.println("生成缩略图bug"+e.getMessage());
	}
	
}
	

    // extract metadata
    public static BufferedImage readImage(java.io.File file) throws IOException {
        // Get an ImageReader.
    	
        try {
            ImageInputStream input = ImageIO.createImageInputStream(file);
            Iterator readers = ImageIO.getImageReaders(input);
            if (readers == null || !readers.hasNext()) {
                return null;
            }

            ImageReader reader = (ImageReader) readers.next();
            reader.setInput(input);
            String format = reader.getFormatName();

            if ("JPEG".equalsIgnoreCase(format) || "JPG".equalsIgnoreCase(format)) {
                try {
                    IIOMetadata metadata = reader.getImageMetadata(0);
                    String metadataFormat = metadata.getNativeMetadataFormatName();
                    IIOMetadataNode iioNode = (IIOMetadataNode) metadata.getAsTree(metadataFormat);

                    NodeList children = iioNode.getElementsByTagName("app14Adobe");
                    if (children.getLength() > 0) {
                        try {
                            iioNode = (IIOMetadataNode) children.item(0);
                            int transform = Integer.parseInt(iioNode.getAttribute("transform"));
                            Raster raster = reader.readRaster(0, reader.getDefaultReadParam());

                            if (input != null) {
                                input.close();
                            }
                            reader.dispose();

                            return createJPEG4(raster, transform);
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            //log.error(e);
                        }
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                   // log.error(e);
//                    LogWriter.log(file.getPath());
                }
            }
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            return null;
        }
        return null;
    }

    /**
     * 
     * Javas ImageIO cant process 4-component images
     * 
     * and Java2D cant apply AffineTransformOp either,
     * 
     * so convert raster data to RGB.
     * 
     * Technique due to MArk Stephens.
     * 
     * Free for any use.
     * 
     */
    private static BufferedImage createJPEG4(Raster raster, int xform) {
        try {
            int w = raster.getWidth();
            int h = raster.getHeight();
            byte[] rgb = new byte[w * h * 3];

            // if (Adobe_APP14 and transform==2) then YCCK else
            // CMYK

            if (xform == 2) { // YCCK --
                // Adobe

                float[] Y = raster.getSamples(0, 0, w, h, 0, (float[]) null);
                float[] Cb = raster.getSamples(0, 0, w, h, 1, (float[]) null);
                float[] Cr = raster.getSamples(0, 0, w, h, 2, (float[]) null);
                float[] K = raster.getSamples(0, 0, w, h, 3, (float[]) null);

                for (int i = 0, imax = Y.length, base = 0; i < imax; i++, base += 3) {
                    float k = 220 - K[i], y = 255 - Y[i], cb = 255 - Cb[i], cr = 255 - Cr[i];

                    double val = y + 1.402 * (cr - 128) - k;
                    val = (val - 128) * .65f + 128;
                    rgb[base] = val < 0.0 ? (byte) 0
                            : val > 255.0 ? (byte) 0xff : (byte) (val + 0.5);

                    val = y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128) - k;
                    val = (val - 128) * .65f + 128;
                    rgb[base + 1] = val < 0.0 ? (byte) 0
                            : val > 255.0 ? (byte) 0xff : (byte) (val + 0.5);

                    val = y + 1.772 * (cb - 128) - k;
                    val = (val - 128) * .65f + 128;
                    rgb[base + 2] = val < 0.0 ? (byte) 0
                            : val > 255.0 ? (byte) 0xff : (byte) (val + 0.5);
                }

            } else {
                // assert xform==0: xform;
                // CMYK

                int[] C = raster.getSamples(0, 0, w, h, 0, (int[]) null);
                int[] M = raster.getSamples(0, 0, w, h, 1, (int[]) null);
                int[] Y = raster.getSamples(0, 0, w, h, 2, (int[]) null);
                int[] K = raster.getSamples(0, 0, w, h, 3, (int[]) null);

                for (int i = 0, imax = C.length, base = 0; i < imax; i++, base += 3) {
                    int c = 255 - C[i];
                    int m = 255 - M[i];
                    int y = 255 - Y[i];
                    int k = 255 - K[i];
                    float kk = k / 255f;

                    rgb[base] = (byte) (255 - Math.min(255f, c * kk + k));
                    rgb[base + 1] = (byte) (255 - Math.min(255f, m * kk + k));
                    rgb[base + 2] = (byte) (255 - Math.min(255f, y * kk + k));
                }
            }

            // from other image types we know InterleavedRasters can be
            // manipulated by AffineTransformOp, so create one of those.
            raster = Raster.createInterleavedRaster(new DataBufferByte(rgb,
                    rgb.length), w, h, w * 3, 3, new int[]{0, 1, 2}, null);

            ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
            ColorModel cm = new ComponentColorModel(cs, false, true,
                    Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
            return new BufferedImage(cm, (WritableRaster) raster, true, null);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            //log.error(e);
            return null;
        }
    }


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//ResizeImage("C:\\aaa.jpg","C:\\rgb.jpg",30,0);
		//ResizeImage("C:\\111.jpg","C:\\cmyk.jpg",30,0);
		String sss="ERR:asdfasdfasfd";
		if(sss.indexOf(":")>0)System.out.println(sss);
	}

}
</span>


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-27832-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 王学兵
      王学兵

      以前最起码吃

    • 赵扩
      赵扩

      小米公司知道国家质检总局抢不到小米手机后

    • 杨蕾
      杨蕾

      只是一种在军事上表现一种姿态

    热点图片
    拼命载入中...