图片上传的处理工具类

图片上传的处理

package com.tools;
//图片上传处理
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class CompressPic {
    public static String darwSmallImg(String url,int compressType, String fname, int new_w1,
            int new_h1, int new_w2, int new_h2) {
        String path = url + "\\" + fname;
        java.io.File file = new java.io.File(path); // 读入刚才上传的文件
        // 新的缩略图保存地址
        String newfname = "\\s" + fname;
        String newpath = url + newfname;

        int old_w=0,old_h=0;

        int width = 100;
        int height = 100;

        try {
            Image src = javax.imageio.ImageIO.read(file);
            old_w= src.getWidth(null); // 得到源图宽
            old_h = src.getHeight(null); // 得到源图高

            if ((old_w < new_w1 && old_h < new_h1) || (old_w < new_w2 && old_h < new_h2)) {
                // 这是不用压缩的情况
                FileInputStream input = new FileInputStream(path);
                FileOutputStream output = new FileOutputStream(newpath);

                int in = input.read();
                while (in != -1) {
                    output.write(in);
                    in = input.read();
                }
                input.close();output.close();

            } else {
                if(compressType==1){//135*90--90*135
                    if ((float) (old_w / old_h) < 0.75) {// 3:4此时为90:135
                        // 如果原图比要压缩的图小,则不压缩
                        if (old_w < new_w2) {
                            width = old_w;
                        } else {
                            width = new_w2;
                        }
                        if (old_h < new_h2) {
                            height = old_h;
                        } else {
                            height = new_h2;
                        }
                    } else if (0.75 <= (float) (old_w / old_h)) {
                        if (old_w < new_w1) {
                            width = old_w;
                        } else {
                            width = new_w1;
                        }
                        if (old_h < new_h1) {
                            height = old_h;
                        } else {
                            height = new_h1;
                        }
                    }
                }else if(compressType==2){//270*178
                    if(old_w<new_w1){
                        width=old_w;
                    }else{
                        width=new_w1;
                    }
                    if (old_h < new_h1) {
                        height = old_h;
                    } else {
                        height = new_h1;
                    }
                }

                BufferedImage tag = new BufferedImage(width, height,
                        BufferedImage.TYPE_INT_RGB);
                tag.getGraphics().drawImage(src, 0, 0, width, height, null); // 绘制缩小后的图

                FileOutputStream newimage = new FileOutputStream(newpath); // 输出到文件流

                JPEGImageEncoder encoder = JPEGCodec
                        .createJPEGEncoder(newimage);
                encoder.encode(tag); // 近JPEG编码
                newimage.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return old_w+"*"+old_h+"."+old_w/old_h;
    }
}
时间: 2024-10-02 19:08:53

图片上传的处理工具类的相关文章

工具类:自己总结的利用fileupload包上传文件的工具类!

package com.mage.util; import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Map; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; im

asp.net ueditor 图片上传路径问题解决

最近练习做一个新闻系统,其中不能少了添加新闻和修改新闻的功能 ,而且还要添加图片.添加文字样式, 所以不得不使用富文本编辑器,在kindeditor和ueditor中,选择了目前还在持续更新的百度产品,ueditor. 刚开始,图片上传的时候,图片不能显示,甚至提示后台文件未配置的提示,经过摸索,解决了问题,现在记录一下: 首先,ueditor默认配置是把ueditor的整个文件夹放在项目的根目录中,这样的话,图片什么的都应该能正常显示. 但是我把ueditor的文件夹放到了根目录下的scrip

PHP 图片上传工具类(支持多文件上传)

====================ImageUploadTool======================== <?php class ImageUploadTool { private $file; //文件信息 private $fileList; //文件列表 private $inputName; //标签名称 private $uploadPath; //上传路径 private $fileMaxSize; //最大尺寸 private $uploadFiles; //上传文件

ASP.NET 图片上传工具类 upload image简单好用功能齐全

使用方法: UploadImage ui = new UploadImage(); //可选参数 //ui.SetWordWater = "哈哈";//文字水印 ui.SetPicWater = Server.MapPath("2.png");//图片水印(图片和文字都赋值图片有效) ui.SetPositionWater = 4;//水印图片的位置 0居中.1左上角.2右上角.3左下角.4右下角 ui.SetSmallImgHeight = "110,4

Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传

在 ThinkPHP 3.2.3 中集成百度编辑器最新版 Ueditor 1.4.3.1,同时将编辑器自带的上传类替换成 ThinkPHP 3.2.3 中的上传类. ① 下载编辑器(下载地址:http://ueditor.baidu.com/website/download.html),解压后放入项目根目录的 Data 目录并且将解压出来的目录重命名为 ueditor. 项目中的控制器 ./Application/Admin/Controller/BlogController.class.php

图片上传服务器压缩工具类

这个是我整理调试的图片上传工具类:只需要图片路径方可:大家可以直接使用:希望可以帮助到大家:代码如下: package com.wyy.twodimcode.push; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; impo

PHP图片上传类

前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也还有必要.一.控制器调用 public function upload_file() { if (IS_POST) { if (!empty($_FILES['Filedata'])) { import('Org.Upload', COMMON_PATH); $upload = new \Upload(); // 允许上传文件大小 $upload->allowMaxSize(C('ALLOW_UPLOAD_FILE_MAX

图片上传类与加密解密

php图片上传类 <?php //引入config_app全局变量 include ini_get("yaf.library") ."/../config/application/global.php"; include 'Image.php'; include 'Aes.php'; //获取链接过来的参数 $format = isset($_GET['__format'])?$_GET['__format']:"json"; switch

经典的图片上传并绘制缩略图的类的代码

首先我们有3个文件 1个文件夹 images文件夹是默认存储图片地址 index.php是主页面 fileupload.class.php是图片上传类 ResizeImage.class.php是图片缩略图类 fileupload.class.php代码如下: <?php /** * file: fileupload.class.php 文件上传类FileUpload * 本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传 */ class FileUpload { pr