练手之作-公司点饭系统
2015-07-08 13:52
260 查看
作为一个开发新手,公司的项目一直都帮不了大忙,所以就兼职了部门的内勤,每天统计订饭人数,别看是个小事情,但是每次都很麻烦,问来问去最后不是剩下就是不够,所以就加班写了一个小系统,内部点饭系统,现总结一下,开发过程中要感谢我的”同桌”和其他的同事,给我解答了一些问题。
1.使用poi生成Excel文件的时候,单元格强制换行:拼接字符串的时候要加上”\r\n”,注意斜杠不要写反了。
2.用流的方式下载Excel文件的时候如果是中文的文件名一定要编码,不然文件是可以下载的,但是命名很不好。
输出流的时候reponse要加上这两句代码
我的下载Excel文件代码段
3.用到了session,web.xml里面配置的session的过期时间为5分钟
4.用到了图片上传,因为要上传小票图片,用了公司项目里的压缩图片方法
压缩图片代码段
我的图片上传直接放在项目下,没有用图片服务器。
1.使用poi生成Excel文件的时候,单元格强制换行:拼接字符串的时候要加上”\r\n”,注意斜杠不要写反了。
2.用流的方式下载Excel文件的时候如果是中文的文件名一定要编码,不然文件是可以下载的,但是命名很不好。
输出流的时候reponse要加上这两句代码
response.setContentType("application/octetstream,charset=utf-8"); response.addHeader("ContentDisposition","attachment;fileName=setmeal.xls");
我的下载Excel文件代码段
String path=request.getSession().getServletContext().getRealPath("/")+"excel"+File.separator; String filepath=path+"setmeal.xls"; exportExcel.outputExcel(filepath,request);//这句是自己写的excel导出的方法 try { //filepath是指欲下载的文件的路径。 File file = new File(filepath); response.setContentType("application/octet-stream,charset=utf-8"); response.addHeader("Content-Disposition", "attachment;fileName=setmeal.xls"); BufferedInputStream br = new BufferedInputStream(new FileInputStream(file)); byte[] buf = new byte[1024]; int len = 0; OutputStream out = response.getOutputStream(); while ((len = br.read(buf)) > 0) out.write(buf, 0, len); br.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
3.用到了session,web.xml里面配置的session的过期时间为5分钟
<session-config> <session-timeout>5</session-timeout> </session-config>
4.用到了图片上传,因为要上传小票图片,用了公司项目里的压缩图片方法
压缩图片代码段
import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.awt.image.ImageProducer; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import com.sun.jimi.core.Jimi; import com.sun.jimi.core.JimiException; import com.sun.jimi.core.JimiWriter; import com.sun.jimi.core.options.JPGOptions; import com.twl.web.util.image.AnimatedGifEncoder; public class ImageUtil { public static void toJPG(String source, String dest, int quality) { if (dest == null || dest.trim().equals("")) dest = source; if (!dest.toLowerCase().trim().endsWith("jpg")) { dest += ".jpg"; System.out.println("Overriding to JPG, output file: " + dest); } if (quality < 0 || quality > 100 || (quality + "") == null || (quality + "").equals("")) { quality = 100; } try { JPGOptions options = new JPGOptions(); options.setQuality(quality); ImageProducer image = Jimi.getImageProducer(source); JimiWriter writer = Jimi.createJimiWriter(dest); writer.setSource(image); writer.setOptions(options); writer.putImage(dest); } catch (JimiException je) { System.err.println("Error: " + je); } } // 2.图片压缩(修改图片长和宽) public static void resize(String source, String desc, int width, int height) { try { // 读入文件 BufferedImage src = ImageIO.read(new File(source)); Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH); BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); Graphics g = tag.getGraphics(); g.drawImage(image, 0, 0, null); // 绘制缩小后的图 g.dispose(); ImageIO.write(tag, "JPEG", new File(desc)); } catch (IOException e) { e.printStackTrace(); } } // 2.图片压缩(修改图片长和宽) public static void resize(String source, OutputStream output, int width, int height) { try { // 读入文件 BufferedImage src = ImageIO.read(new File(source)); Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH); BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); Graphics g = tag.getGraphics(); g.drawImage(image, 0, 0, null); // 绘制缩小后的图 g.dispose(); ImageIO.write(tag, "JPEG", output); } catch (IOException e) { e.printStackTrace(); } } // 3.图片裁剪 public static void cut(String source, String desc, int x, int y, int width, int height) { try { FileInputStream is = new FileInputStream(source); Iterator<ImageReader> it = ImageIO .getImageReadersByFormatName("jpg"); ImageReader reader = it.next(); ImageInputStream iis = ImageIO.createImageInputStream(is); reader.setInput(iis, true); ImageReadParam param = reader.getDefaultReadParam(); Rectangle rect = new Rectangle(x, y, width, height); param.setSourceRegion(rect); BufferedImage bi = reader.read(0, param); ImageIO.write(bi, "jpg", new File(desc)); } catch (FileNotFoundException e) { System.out.println("Can't find the image file: " + source); e.printStackTrace(); } catch (IOException e) { System.out.println("Unable to get the input stream :" + source); e.printStackTrace(); } } /** * @param source * @param dest * @throws JimiException */ public static void toGIF(String source, String dest) throws JimiException { if (dest == null || dest.trim().equals("")) dest = source; // 1:转换为jpg if (!dest.toLowerCase().trim().endsWith("jpg")) { dest += ".jpg"; } toJPG(source, dest, 75); BufferedImage file_in = null; File file = new File(dest); try { file_in = javax.imageio.ImageIO.read(file); } catch (Exception e) { e.printStackTrace(); } int end = dest.lastIndexOf("."); file.deleteOnExit(); // output *.gif file.renameTo(new File(dest.substring(0, end) + ".gif")); // jpg to gif AnimatedGifEncoder e = new AnimatedGifEncoder(); e.start(dest); e.addFrame(file_in); e.finish(); /* * //分解GIF: GifDecoder d = new GifDecoder(); d.read("sample.gif"); int n * = d.getFrameCount(); for(int i = 0; i < n; i++) { BufferedImage frame * = d.getFrame(i); // frame i int t = d.getDelay(i); * // display duration of frame in milliseconds * // do something with frame } * * //合成GIF: AnimatedGifEncoder e = new AnimatedGifEncoder(); * e.start(outputFileName); e.setDelay(1000); // 1 frame per sec * e.addFrame(image1); e.addFrame(image2); e.finish(); */ } /** * @param img * @param dest * @throws JimiException */ public static void toTIF(Image img, String dest) throws JimiException { if (!dest.toLowerCase().trim().endsWith("tif")) { dest += ".tif"; System.out.println("Overriding to TIF, output file: " + dest); } dest = dest.substring(0, dest.lastIndexOf(".")) + ".jpg"; try { System.out.println("toTIF encode"); JimiWriter writer = Jimi.createJimiWriter(dest); writer.setSource(img); dest = dest.substring(0, dest.lastIndexOf(".")) + ".tif"; writer.putImage(dest); } catch (Exception e) { e.printStackTrace(); } } /** * 线性改变图片尺寸(可同时改变图片格式) * * @param source * 源文件完整路径 * @param desc * 目标文件完整路径 * @param ins * 放大倍数(小于1则为缩小) * @throws JimiException * @throws IOException */ public static void changeDimension(String source, String desc, double ins) throws JimiException, IOException { String temp = desc; File _file = null; if (desc == null || desc.trim().equals("")) desc = source; if (!desc.toLowerCase().trim().endsWith("jpg")) { temp = desc.trim() + ".jpg"; } toJPG(source, temp, 75); _file = new File(temp); // 读入文件 Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象 double wideth = (double) src.getWidth(null); // 得到源图宽 double height = (double) src.getHeight(null); // 得到源图高 System.out.println("源图宽:" + wideth); System.out.println("源图高:" + height); //缩放处理 int iWideth = (int) (wideth * ins); int iHeight = (int) (height * ins); System.out.println("现图宽:" + iWideth); System.out.println("现图高:" + iHeight); System.out.println("缩放参数:" + ins); BufferedImage tag = null; try { tag = new BufferedImage(iWideth, iHeight, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图 /* * //打水印 File _filebiao = new File("test2.jpg"); Image src_biao = * ImageIO.read(_filebiao); int wideth_biao = * 40;//src_biao.getWidth(null); int height_biao = * 40;//src_biao.getHeight(null); * tag.getGraphics().drawImage(src_biao * ,50,50,wideth_biao,height_biao,null); */ } catch (Exception e) { e.printStackTrace(); } if (!temp.trim().equals(desc)) _file.deleteOnExit(); if (desc.toLowerCase().trim().endsWith("gif")) { System.out.println("the target type is gif!"); AnimatedGifEncoder e = new AnimatedGifEncoder(); e.start(desc); e.addFrame(tag); e.finish(); } else if (desc.toLowerCase().trim().endsWith("tif") || desc.toLowerCase().trim().endsWith("tiff")) { System.out.println("the type is tif!"); toTIF(tag, desc); } else { try { System.out.println("common type!"); JimiWriter writer = Jimi.createJimiWriter(desc); writer.setSource(tag); writer.putImage(desc); } catch (Exception ex) { ex.printStackTrace(); } } } public static void transpic(String infile, int iWideth, int iHeight, String type) throws JimiException, IOException { String temp = infile; File _file = null; /* * if (outfile == null || outfile.trim().equals("")) outfile = infile; * if (!outfile.toLowerCase().trim().endsWith("jpg")) { temp = * outfile.trim() + ".jpg"; } */ int index = infile.indexOf('.'); if (index != -1 && "jpg".equals(infile.substring(index))) { toJPG(infile, temp, 75); } _file = new File(temp); // 读入文件 Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象 double wideth = (double) src.getWidth(null); // 得到源图宽 double height = (double) src.getHeight(null); // 得到源图长 System.out.println("源图宽:" + wideth); System.out.println("源图长:" + height); /* * //缩放处理 int iWideth = (int) (wideth * ins); int iHeight = (int) * (height * ins); */ // int iWideth = 300; // int iHeight = 200; System.out.println("现图宽:" + iWideth); System.out.println("现图长:" + iHeight); String outfile = ""; BufferedImage tag = null; try { tag = new BufferedImage(iWideth, iHeight, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图 /* * //打水印 File _filebiao = new File("test2.jpg"); Image src_biao = * ImageIO.read(_filebiao); int wideth_biao = * 40;//src_biao.getWidth(null); int height_biao = * 40;//src_biao.getHeight(null); * tag.getGraphics().drawImage(src_biao * ,50,50,wideth_biao,height_biao,null); */ } catch (Exception e) { e.printStackTrace(); } if (!temp.trim().equals(outfile)) _file.deleteOnExit(); if (outfile.toLowerCase().trim().endsWith("gif")) { System.out.println("the type is gif!"); AnimatedGifEncoder e = new AnimatedGifEncoder(); e.start(outfile); e.addFrame(tag); e.finish(); } else if (outfile.toLowerCase().trim().endsWith("tif") || outfile.toLowerCase().trim().endsWith("tiff")) { System.out.println("the type is tif!"); toTIF(tag, outfile); } else { try { System.out.println("common type!"); JimiWriter writer = Jimi.createJimiWriter(outfile); writer.setSource(tag); writer.putImage(outfile); } catch (Exception ex) { ex.printStackTrace(); } } } public static void main(String[] args) { String dest = "E:\\desc.png"; String source = "E:\\1431945665044.JPG"; // int quality = 100; resize(source, dest, 256, 168); } }
我的图片上传直接放在项目下,没有用图片服务器。
相关文章推荐
- 深入Java集合学习系列:HashMap的实现原理
- SQL_ROW_NUMBER 用于分页存储
- How to write conditional equations
- ibatis.net中Iterate的使用
- 年轻人你活着不是为了看K线!
- Hibernate与JDBC事务整合
- poj1258 Agri-Net 最小生成树
- 系统管理:查看cpu、内存、磁盘、I/O、负载、性能状态
- 每天一个linux命令(19):find 命令概览
- Freemarker输出$和html标签等特殊符号
- IPA 包不经过APP Store直接发布到网站供用户下载安装
- 大数据架构及流处理架构
- xcode模拟器的安装路径
- 膝盖中了一箭之手术篇
- 编写Windows Service 备忘
- AndroidAnnotations快速开发框架
- Serializable:自定义序列化
- CentOS 安装Python3.4.0
- asktom的含义maxloghistory
- 画财经:台湾股市泡沫是如何破灭的