Java图片上传

图片上传,其实,也可以按照之前文章——文件上传的方式实现,因为图片也是文件。只要是文件,都可以用流来接收,然后把流给写出到指定的物理空间下,形成我们需要的物理文件。

今天,我们就不用上传文件的方式,这种方式和我之前的一篇制作二维码的文章类似。首先,读文件,需要知道文件的路径,比如放在C盘下面的某个文件。然后把这个图片通过画笔方式给画出来。放到指定服务器路径下。不需要第三方插件,sun公司提供的image工具类就可以实现。

下面我们把桌面上的blue.png图片上传到服务器上。

public static String imgUpload(HttpServletRequest request,
                                   HttpServletResponse response)
        throws Exception
    {
        String resultPath = "";
        String filePath = "C:/Users/Administrator/Desktop/blue.png";
        String savePath = request.getRealPath("/save/");
        File uploadDir = new File(savePath);
        File file = new File(filePath);

        if ( !file.isFile())
        {
            return "不是文件类型";
        }
        if ( !uploadDir.exists())
        {
            uploadDir.mkdirs();
        }
        BufferedImage img = ImageIO.read(file);
        if (img != null)
        {
            BufferedImage tag = new BufferedImage(img.getWidth(),
                img.getHeight(), BufferedImage.TYPE_INT_RGB);
            tag.getGraphics().drawImage(img, 0, 0, img.getWidth(),
                img.getHeight(), null);

            int lastLength = filePath.lastIndexOf(".");
            Date date = new Date(System.currentTimeMillis());
            String strDate = new SimpleDateFormat("yyyyMMddhhmmss").format(date);
            int random = (int) (Math.random() * 99);
            String imageName = strDate + random; //以系统时间来随机的创建图片文件名
            String fileType = filePath.substring(lastLength); //获取上传图片的类型
            resultPath = savePath + imageName + fileType;
            System.out.println(resultPath);

            FileOutputStream out = new FileOutputStream(resultPath);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag);
            param.setQuality(0.95f, true); //95%图像
            param.setDensityUnit(1); //像素尺寸单位.像素/英寸
            param.setXDensity(300); //水平分辨率
            param.setYDensity(300); //垂直分辨率
            encoder.setJPEGEncodeParam(param);
            encoder.encode(tag);
            tag.flush();
            out.flush();
            out.close();
        return resultPath;
    }

这种方式上传图片,好处就在于,可以控制图片的大小尺寸,可以按照自己的需要进行裁剪压缩图片。

时间: 2024-10-30 10:54:29

Java图片上传的相关文章

java图片上传(mvc)

最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.idea开发. 一.图片上传还是使用的这款jq插件.前端部署这款插件,不用说了吧.效果图       二.前台代码只需要盖一个位置.因为是比较好用的插件.插件样式自行修改. 三.后台代码. 后面看不见的. 这个图片上传主要是自己写了几个函数.让图片储存更加方便.分成了年月日储存.但是后期遍历比较困难,

js 利用iframe和location.hash跨域解决办法,java图片上传回调JS函数跨域

奶奶的:折腾了我二天,终于解决了!网上有很多例子. 但跟我的都不太一样,费话不多说了,上图   上代码: IE ,firefix,chrome 测试通过 js :这个主页面,部分代码, function submitUpload(id){ $("#imgSrc" + id +"").attr("alt", "图片上传中--"); var imgID = id; if(id>0){ imgID = 1; } var for

UEditor之基于Java图片上传前后端源码研究

开心一笑 一定要快乐学习,所以学习之前先看个笑话: 刚来北京,租了一个小房,一楼,上淘宝买衣服,选了付钱了联系卖家:"我已付款,请发货."谁知那货直接说:"我看到你地址了,自己上楼来拿吧!我就在你楼上." 拿你妹,老子付了邮费的...送下来. 提出问题 Ueditor前后端源码的学习和简单的研究??? 解决问题 前提: 假如你已经看了我的前一篇文章,这一点很重要的啊,当然不看也可以,因为你已经是一个高手,就像我一样,哈哈: 假如你已经安装tomcat服务器: 假如你

UEditor之基于Java图片上传前后端源码研究 (转)

http://blog.csdn.net/huangwenyi1010/article/details/51637439 这是我的项目目录 1.从访问路径http://localhost:8081/Test/_examples/simpleDemo.html,我们主要是要看看,富文本框被加载出来之前,会调用哪些代码, 不卖关子,很明显,会调用后端的controller.jsp代码,因为我们已经在ueditor.config配置了: // 服务器统一请求接口路径 , serverUrl: URL

js 利用iframe和location.hash跨域解决的方法,java图片上传回调JS函数跨域

奶奶的:折腾了我二天,最终攻克了!网上有非常多样例. 但跟我的都不太一样,费话不多说了,上图   上代码: IE ,firefix,chrome 測试通过 js :这个主页面,部分代码, function submitUpload(id){ $("#imgSrc" + id +"").attr("alt", "图片上传中--"); var imgID = id; if(id>0){ imgID = 1; } var fo

Java图片上传压缩处理

所需要的jar包在:\jdk1.7.0_25\jre\lib\rt.jar里面 package util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.ima

浅谈java图片上传之剪切

对于一个网站来说,图片显示都是有一定的宽高比的,而客户上传的图片大多未经过剪切,故上传以后对图片进行一定的剪切是非常必要的. 如此,我们应当剪一个类来完成这项工作. public class ImageHelper{ ///图片宽高比,默认1.333  double _webWidth=1.333; /// <summary> ///网站显示图片的 宽/高比 /// </summary> public double WebWidth { get { return _webWidth

java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile.

个人笔记,以备后用. 表体代码: <td colspan="3"> <s:file label="上传" name="uploadFile" id="uploadNumFile" onchange="fileUpload('uploadNumFile','goodsRecordDtl_goodsPicture','goodsPicture_img')" /> <a href=&

UEditor之实现配置简单的图片上传示例

开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过几次眼神交流,但从没说过话,"买毛巾啊",看着阿华手里的毛巾,阿菲先开口了. 阿华回到:"是啊,这里的老板眼神太好了,我不敢偷,就只有买了." 阿菲一下就哈哈笑了,配合到:"哇,原来你是小偷." 阿华:"嘘,小声点,其实主要原因是--"阿华指着自己的脑袋接着说到:"你看,我是个有头有脸的人,所以还是要用用毛巾的