您的位置:首页 > 编程语言 > Java开发

java上传图片

2015-06-23 16:19 666 查看
上传图片的公共类
import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.Properties;import javax.imageio.ImageIO;import javax.imageio.stream.ImageInputStream;import javax.servlet.ServletContext;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.log4j.Logger;public class UploadImgUtil {protected Logger log = Logger.getLogger(this.getClass());/*** 生成文件图片生成路径和图片名* @return 图片路径和图片名*/public  static String  getPicPathAndName() {Date date = new Date();Integer year = DateUtil.getYear(date);Integer month = DateUtil.getMonth(date);java.util.Random random=new java.util.Random();int value = random.nextInt(999999999);// 当前时间毫秒数为文件名前缀String fileName = String.valueOf(value);String fullFileName = year + "/"+month+"/"+fileName;return fullFileName;}/*** 根据地址保存磁盘* @param urlPath* @param imgPath* @throws Exception*/@SuppressWarnings("unused")public static boolean saveStreamImage(InputStream inputStream,String imgPath,String imgName,Integer width,Integer height){try {Properties prop = getPropertiesFile();String props = prop.getProperty("filepath");//String props = "/opt/tomcat-geyang/webapps/ROOT/images/";//String props = "E:/workspace_yanhushi/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/kangbanweb_war/images/";String[] path = imgName.split("\\/");if(newFolder(props+imgPath+"/"+path[0]+"/"+path[1]+"/"+path[2]+"/")){ImageInputStream iis = ImageIO.createImageInputStream(inputStream);String imgType="jpg";byte[] data = readStream(iis);File file = new File(props+imgPath+"/"+path[0]+"/"+path[1]+"/"+path[2]+"/"+path[3]+"_"+width.toString()+"_"+height.toString()+"."+imgType);FileOutputStream outStream = new FileOutputStream(file);// 写出对象outStream.write(data);// 写入outStream.close(); // 关闭流return true;}else{//log.error("saveStreamImage:file creat Failure,imagePath:"+imgPath);return false;}} catch (Exception e) {//log.error("saveStreamImage error:"+e);return false;}}/*** 根据地址保存磁盘* @param urlPath* @param imgPath* @throws Exception*/public static boolean saveStreamImages(InputStream inputStream,String imgPath,String imgName){try {Properties prop = getPropertiesFile();String props = prop.getProperty("filepath");//String props = "/usr/local/nginx/www/webs/www.meyton.cn/images/";String[] path = imgName.split("\\/");if(newFolder(props+imgPath+"/"+path[0]+"/"+path[1]+"/")){ImageInputStream iis = ImageIO.createImageInputStream(inputStream);String imgType="jpg";byte[] data = readStream(iis);File file = new File(props+imgPath+"/"+path[0]+"/"+path[1]+"/"+path[2]+"."+imgType);FileOutputStream outStream = new FileOutputStream(file);// 写出对象outStream.write(data);// 写入outStream.close(); // 关闭流return true;}else{//log.error("saveStreamImage:file creat Failure,imagePath:"+imgPath);return false;}} catch (Exception e) {//log.error("saveStreamImage error:"+e);return false;}}/*** 读取数据流* @param inStream* @return* @throws Exception*/public static byte[] readStream(ImageInputStream inStream) throws Exception{ByteArrayOutputStream outstream = new ByteArrayOutputStream();byte[] buffer = new byte[10240]; // 用数据装int len = -1;while ((len = inStream.read(buffer)) != -1){outstream.write(buffer, 0, len);}outstream.close();inStream.close();return outstream.toByteArray();}/*** 新建目录* @param folderPath String 如 c:/fqf* @return boolean*/public static boolean newFolder(String folderPath) {try {String filePath = folderPath;filePath = filePath.toString();java.io.File myFilePath = new java.io.File(filePath);if (!myFilePath.exists()) {myFilePath.mkdirs();}return true;}catch (Exception e) {//log.error("newFolder error:"+e);return false;}}/*** 读取Properties配置文件* @return 返回Properties数据*/public static Properties getPropertiesFile(){InputStream is = UploadImgUtil.class.getClassLoader().getResourceAsStream("config.properties");Properties prop = new Properties();try {prop.load(is);is.close();} catch (IOException ex) {//logger.error("读取配置文件失败,配置文件路径为:config.properties", ex);}return prop;}}
<pre name="code" class="java">import java.awt.Image;import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;import javax.imageio.ImageIO;@SuppressWarnings("restriction")public class ImgResizeUtil {/*** 图像缩放 jpg格式** @param imgsrc*             :原图片文件路径* @param imgdist*             :生成的缩略图片文件路径* @param widthdist*             :生成图片的比例宽度* @param heightdist*             :生成图片的高度*/public static void reduceImg(String imgsrc, String imgdist, int widthdist,int heightdist) {try {File srcfile = new File(imgsrc);if (!srcfile.exists()) {return;}Image src = ImageIO.read(srcfile);int imageWidth = src.getWidth(null);int imageHeight = src.getHeight(null);widthdist = widthdist * imageWidth / 100;heightdist = imageHeight * heightdist /100;BufferedImage tag = new BufferedImage((int) widthdist,(int) heightdist, BufferedImage.TYPE_INT_RGB);/** Image.SCALE_SMOOTH 的缩略算法   生成缩略图片的平滑度的* 优先级比速度高 生成的图片质量比较好 但速度慢*/tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist,Image.SCALE_SMOOTH), 0, 0, null);FileOutputStream out = new FileOutputStream(imgdist);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(tag);out.close();} catch (IOException ex) {ex.printStackTrace();}}public static void reduceImgGif(String imgsrc, String imgdist, int widthdist,int heightdist) {try {File srcfile = new File(imgsrc);if (!srcfile.exists()) {return;}Image src = ImageIO.read(srcfile);BufferedImage tag = new BufferedImage((int) widthdist,(int) heightdist, BufferedImage.TYPE_INT_RGB);/** Image.SCALE_SMOOTH 的缩略算法   生成缩略图片的平滑度的* 优先级比速度高 生成的图片质量比较好 但速度慢*/tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist,Image.SCALE_SMOOTH), 0, 0, null);ImageIO.write(tag, "gif", new File(imgdist));} catch (IOException ex) {ex.printStackTrace();}}/*** 根据图片路径 读取图片文件* @param fileName* @return*/public static BufferedImage readImage(String fileName) {BufferedImage bi = null;try {bi = ImageIO.read(new File(fileName));} catch (IOException ioe) {ioe.printStackTrace();}return bi;}/*** 生成新的图片文件* @param im* @param formatName* @param fileName* @return*/public static boolean writeImage(RenderedImage im, String formatName,String fileName) {boolean resul4000t = false;try {result = ImageIO.write(im, formatName, new File(fileName));} catch (IOException ioe) {ioe.printStackTrace();}return result;}/*** 转换图片格式 到 jpg* @param im* @param fileName* @return*/public static boolean writeJPEGImage(RenderedImage im, String fileName) {return writeImage(im, "JPEG", fileName);}/*** 转换图片格式 到 gif   不知到好用不* @param im* @param fileName* @return*/public static boolean writeGIFImage(RenderedImage im, String fileName) {return writeImage(im, "GIF", fileName);}public static boolean writePNGImage(RenderedImage im, String fileName) {return writeImage(im, "PNG", fileName);}public static boolean writeBMPImage(RenderedImage im, String fileName) {return writeImage(im, "BMP", fileName);}}
方法里面调用
<pre name="code" class="java">MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;InputStream image = multipartRequest.getFile("image").getInputStream();Date date = new Date();Integer year = DateUtil.getYear(date);Integer month = DateUtil.getMonth(date);String fullFileName = year + "/"+month+"/"+agent_id+"/"+IdUtil.getIdObject();Properties prop = getPropertiesFile();String props = prop.getProperty("filepath");boolean ok = UploadImgUtil.saveStreamImage(image,"printscreen",fullFileName,125,150);if(ok){String imgPaths = props+"printscreen/"+fullFileName+"_125_150.jpg";String limgPath = props+"printscreen/"+fullFileName+"_320_300.jpg";ImgResizeUtil.reduceImg(imgPaths, limgPath, 250, 200);Integer ps = gyOrderService.updatePrintScreenPic(koid, fullFileName);Integer logp = gyOrderService.saveOrderAddLog(dto.getOrder_id(), "wap端添加付款截图", 5, agent_id.toString());mv.addObject("m", "添加成功");}else{mv.addObject("m", "添加失败");}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: