java 图片的自定义大小

java 小功能,进行图片的自定义大小

package com.project.video.controller;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import javax.imageio.ImageIO;

import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;

public class ImageOp {

     public static String DEFAULT_PREVFIX = "thumb_";
     public static Boolean DEFAULT_FORCE = false;//建议该值为false
     private static  Logger loger = Logger.getLogger(ImageOp.class);
     /**
      * <p>Title: thumbnailImage</p>
      * @param imagePath 原图片路径
      * @param w   缩略图宽
      * @param h   缩略图高
      * @param prevfix 生成缩略图的前缀
      * @param force  是否强制按照宽高生成缩略图(如果为false,则生成最佳比例缩略图)
      */
     public  static void thumbnailImage(MultipartFile imagePath, int w, int h, String prevfix, boolean force){
      //File imgFile = new File(imagePath);

       try {
           loger.info("start .......");

        // ImageIO 支持的图片类型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]
        String types = Arrays.toString(ImageIO.getReaderFormatNames());
        String suffix = null;
        // 获取图片后缀
        loger.info("图片名称"+imagePath.getOriginalFilename());
        if(imagePath.getOriginalFilename().indexOf(".") > -1) {

         suffix = imagePath.getOriginalFilename().substring(imagePath.getOriginalFilename().lastIndexOf(".") + 1);
        }// 类型和图片后缀全部小写,然后判断后缀是否合法
        if(suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()) < 0){
            loger.error("图片后缀不合法");
         return ;
        }
        //获取原图的输入流
        BufferedImage img = ImageIO.read(imagePath.getInputStream());
        if(!force){
         // 根据原图与要求的缩略图比例,找到最合适的缩略图比例
         int width = img.getWidth(null);
         int height = img.getHeight(null);
         if((width*1.0)/w < (height*1.0)/h){
          if(width > w){
           h = Integer.parseInt(new java.text.DecimalFormat("0").format(height * w/(width*1.0)));

          }
         } else {
          if(height > h){
           w = Integer.parseInt(new java.text.DecimalFormat("0").format(width * h/(height*1.0)));

          }
         }
        }
        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics g = bi.getGraphics();
        g.drawImage(img, 0, 0, w, h, Color.LIGHT_GRAY, null);
        g.dispose();
        loger.info("图片生成");
        String desc ="f:\\12345.jpg";
        // 将图片保存在原目录并加上前缀
        ImageIO.write(bi, suffix, new File(desc));

       } catch (Exception e) {

          e.printStackTrace();
          loger.error("图片生成错误");

       }

     }

    }
    

原文地址:https://www.cnblogs.com/iscys/p/9514354.html

时间: 2024-12-14 00:17:04

java 图片的自定义大小的相关文章

bootstrap后台框架源码 java图片爬虫 自定义表单

获取[下载地址]   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Dr

Java全新高大尚HTML5 bootstrap后台框架源码 java图片爬虫 自定义表单

获取[下载地址]   QQ: 313596790   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]A 集成代码生成器(开发利器);                                         技术:313596790   增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面

后台框架源码 java图片爬虫 自定义表单

获取[下载地址]     [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.

Android 相册图片选取+自定义裁剪方式(非系统裁剪)

不多说,直接上代码(裁剪的代码摘自网络.)(项目可运行) 主要是系统自身的剪切方式在有些机型上会程序崩溃的问题. 1 package com.jichun.activity; 2 3 import java.io.FileNotFoundException; 4 5 import com.jichun.view.CropCanvas; 6 7 import android.app.Activity; 8 import android.content.ContentResolver; 9 impo

[Java]图片压缩

Java中内置的压缩图片有两种方式: 通过Image的getScaledInstance方法将图片尺寸进行压缩,它的压缩策略有: SCALE_DEFAULT 默认图像缩放算法 SCALE_FAST 缩放速度优先 SCALE_SMOOTH 图像平滑度优先 它的优点是可以在尽量不影响图像质量的情况下对图片进行一定的压缩,缺点是压缩的效果有局限性. 使用ImageWriteParam的setCompressionQuality方法设置ImageWrite输出图片时生成的图片质量,它的优点是可以在不改变

java图片处理工具之-ImageMagick+jmagick(一)

1.介绍: ImageMagick是一套功能强大.稳定而且免费的工具集和开发包,可以用来读.写和处理超过89种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式.利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小.旋转.锐化.减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存.是搜狗百科的介绍! 2.下载: 其他安装教程:http://blog.sina.com.cn/s

Java图片的灰度处理方法

通过看网上各种大牛的总结,和自己亲身测试总结一下Java图片的灰度处理方法 (1)我们熟知的图片中的像素点有RGB值. (2)图片灰度化的方式大概分为四种,第一种是最大值法(取颜色RGB中的最大值作为灰度值):第二种是最小值法(取颜色RGB的最小值作为灰度值):第三种是均值法(取颜色的RGB的平均值作为灰度值):第四种是加权法灰度化(怎么加权最合适,效果最好,百度百科说的很全面). (3)废话不多说,记录一下我按照上述四种方法实现的效果和代码: 原图 按照上述四种方式分别灰度化后的效果如下面四图

手机中的图片怎么压缩大小?

手机中的图片怎么压缩大小?我们的手机中都会保存很多的图片,这些图片有些会很大,怎么将手机中的图片压缩变小呢,下面小编就给大家分享一个将手机中的图片压缩变小的简单方法.第一种方法:在线压缩1:(首先需要将手机上的图片传到电脑上,借助电脑上的压缩工具进行压缩)打开在线图片压缩的网站,点击在线图片压缩下的立即使用按钮.2:添加要进行压缩的图片,点击或者拖拽将其添加进来.3:最后点击开始压缩的按钮就可以实现对添加的图片的压缩. 第二种方法:使用迅捷压缩软件1:打开这个图片压缩的软件,页面中有三个功能可以

java 图片压缩变色问题

java图片压缩,有时由于图片自身的原因,如透明的PNG图.改alpha通道或四色图等. 压缩完了,会出现图片变色的情况. 如: 原图 压缩完: 尝试了很多方法,如JDK原生的方式及第三方组件java-image-scaling或thumbnailator都不解决问题. 后来采用阿里的SimpleImage解决.记录一下 SimpleImage github地址:https://github.com/alibaba/simpleimage依赖jar:commons-io-2.4.jarcommo