`
zhangweioak
  • 浏览: 63433 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java图片操作

    博客分类:
  • Java
 
阅读更多
1、图片压缩

//图片压缩
public static void imageCompress(String path,String newPath,String fileName,String toFileName,float scale,int width,int height){
        imageCompress(path,newPath, fileName, toFileName, scale, 0.75f, width, height);
    }
    /**
     * 描述:
     * @param path 需要压缩的图片路径
     * @param fileName 要压缩的图片名称
     * @param toFileName 压缩后的图片名称
     * @param scale 压缩比例 不能大于1,默认0.5
     * @param quality 压缩品质介于0.1~1.0之间 
     * @param width 压缩后的图片的宽度
     * @param height 压缩后的图片的高度
     * 返回值:void
     */
    private static void imageCompress(String path,String newPath, String fileName,String toFileName,float scale,float quality,int width,int height){
    	FileOutputStream out = null;
    	try {
            Image image = javax.imageio.ImageIO.read(new File(path +"/"+ fileName));
            int imageWidth = image.getWidth(null);
            int imageHeight = image.getHeight(null);
            if(scale >=1.0) scale = 0.99f;//默认压缩比为0.5,压缩比越大,对内存要去越高,可能导致内存溢出
            //按比例计算出来的压缩比
            float realscale = getRatio(imageWidth,imageHeight,width,height);
            float finalScale = Math.min(scale, realscale);//取压缩比最小的进行压缩
            imageWidth = (int)(finalScale*imageWidth);
            imageHeight = (int)(finalScale*imageHeight);
            
            image = image.getScaledInstance(imageWidth, imageHeight, Image.SCALE_AREA_AVERAGING);
            BufferedImage mBufferedImage = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = mBufferedImage.createGraphics();
    
            g2.drawImage(image, 0, 0,imageWidth, imageHeight, Color.white,null);
            g2.dispose();
            
            float[] kernelData2 = {-0.125f, -0.125f, -0.125f,-0.125f,2, -0.125f,-0.125f,-0.125f, -0.125f };
            Kernel kernel = new Kernel(3, 3, kernelData2);
            ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
            mBufferedImage = cOp.filter(mBufferedImage, null);

            out =  new FileOutputStream(newPath+"/" + toFileName);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(mBufferedImage);
            param.setQuality(quality, true);//默认0.75
            encoder.setJPEGEncodeParam(param);
            encoder.encode(mBufferedImage);
        }catch (FileNotFoundException fnf){
        	fnf.printStackTrace();
        }catch (IOException ioe){
            ioe.printStackTrace();
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
        	 try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
        }
      }
    
   private static float getRatio(int width,int height,int maxWidth,int maxHeight){
          float Ratio = 1.0f;
          float widthRatio ;
          float heightRatio ;
        widthRatio = (float)maxWidth/width;
        heightRatio = (float)maxHeight/height;
        if(widthRatio<1.0 || heightRatio<1.0){
          Ratio = widthRatio<=heightRatio?widthRatio:heightRatio;
        }
        return Ratio;
      }
   
    /**
     * 动态获取压缩比列根据宽度
     * @param map
     * @return
     */
    public static float getCompressSize(float width){
    	float result = 0.5f;
    	result = 595/width;
    	result = Float.parseFloat(StringUtil.formatNumber("#.##", result));
    	return result;
    }

    /** 
     * 计算图片尺寸大小等信息:w宽、h高、s大小。异常时返回null。 
     * 
     * @param imgpath 图片路径 
     * @return 图片信息map 
     */ 
    public static Map getImgInfo(InputStream fis) throws Exception { 
            Map map = new HashMap();
            BufferedImage buff = ImageIO.read(fis); 
            map.put("w", new Long(buff.getWidth()* 1L)); //宽度
            //map.put("h", new Long(buff.getHeight()* 1L)); //高度
            //map.put("s", new Long(imgfile.length()));  //获取图片大小
            fis.close(); 
            return map; 
    }
分享到:
评论

相关推荐

    java图片操作

    java 图片压缩 图片切割

    java操作图片的工具类

    java操作图片的工具类,包括图片放大缩小、图片裁剪、打水印(文字水印和图片水印)

    java图片浏览管理系统

    这个系统可能包含了文件浏览器组件、图片预览功能、以及一些基本的图片操作选项,如旋转、缩放等。下面将详细介绍这个系统可能涉及的技术点和相关知识。 1. **Java基础**:作为系统的开发语言,Java提供了丰富的...

    java对图片进行操作.rar_java 图片剪裁_java图片_图片

    本资源“java对图片进行操作.rar”提供了一种用Java进行图像操作的工具类,特别关注于图片的剪裁、重置大小以及按比例缩小等功能。以下是关于这些功能的详细解释和实现方法。 首先,图片剪裁是调整图像大小并提取其...

    java图片生成器

    Java图片生成器是一种基于Java编程语言的工具,用于创建、编辑或转换图像文件。这个工具可能包含各种功能,如绘制图形、添加文字、处理图像效果、读取和写入不同图像格式等。在Java中实现图片生成器涉及到对Java 2D ...

    java实现对图片的各种操作

    java实现对图片裁剪,并把裁剪新图片保存,按倍率缩小、放大图片,重置图形的边长大小,拼接图片等等操作 使用Java进行图像处理的一些基础操作,java实现对图片的各种操作下载

    java处理图片背景颜色的方法

    在标签中,作者列出了四个关键词:“java 处理图片背景颜色”、“java 图片背景颜色替换”、“java 图片背景颜色更改”、“java 蓝底寸照批量转换为白底”,这些关键词都与 Java 处理图片背景颜色相关。 在部分内容...

    java 图片水印 改变图片大小

    然后,可以调用Java的图片处理函数,对保存的图片进行操作。最后,返回处理后的图片路径或者直接显示在页面上。 在实际应用中,我们还需要考虑性能优化,比如使用内存缓存减少磁盘I/O,或者使用多线程处理大量图片...

    Java实现pdf格式图片转换

    在java中通过ImageMagick...在wiondows操作系统java开发环境中可通过ImageMagick安装包和im4java.jar把其他格式图片如pdf转换为PNG,JPEG等常用格式图片。操作其实比较简单。内附有操作步骤及图片转换文件大小的调整。

    java操作wordpdf图片生成图片水印

    本篇将详细介绍如何使用Java来操作Word和PDF文档,并在其中的图片上生成水印。 首先,我们关注的是Java对Word文档的操作。Apache POI是一个非常流行的Java库,用于读写Microsoft Office格式的文件,包括Word(.docx...

    java 课程设计 JPEG图片操作

    在Java编程环境中,对JPEG图片进行操作是一项常见的任务,尤其在进行课程设计时,学习如何处理图像文件是非常有价值的。JPEG是一种广泛使用的有损压缩图像格式,适用于存储照片和其他高质量图像。在这个项目中,我们...

    java 操作图片,往图片写字,将多图片合并

    根据给定文件的信息,本文将围绕Java操作图片的方法展开,主要涵盖往图片上添加文字以及合并多张图片的功能。这些技术在制作许可证书、安全证书等应用场景中非常实用。 ### Java操作图片概述 #### 一、加载图片 在...

    Java实现用Mysql存取图片操作实例

    本实例将详细介绍如何使用Java和MySQL进行图片的存取操作。 首先,让我们了解MySQL中的BLOB类型。BLOB是一个用来存储大量二进制数据的字段类型,它不受字符集的限制,适合存储图像、音频或视频文件等。MySQL提供了...

    java写入excel图片操作

    在Java编程中,将图片写入Excel文件是一项常见的任务,特别是在数据分析、报表生成或数据可视化的情景下。这里,我们将详细探讨如何实现这个功能,主要依赖于`Apache POI`库来操作Excel,并结合`JFreeChart`库来创建...

    java编写的图片浏览器

    总的来说,这个Java图片浏览器项目体现了面向对象编程的原则,结合了文件I/O、GUI设计和图片处理技术,展示了Java在开发桌面应用程序方面的强大能力。同时,其优化的内存管理策略使得该应用能够适应各种规模的图片...

    java实现图片转换为视频

    Xuggler是基于C++的FFmpeg库的一个Java封装,它允许开发者直接在Java中操作音视频流。ffmpeg4java则是对FFmpeg命令行工具的Java包装,通过执行命令行指令实现视频处理。这两种库都能很好地完成图片转视频的任务。 ...

    Java实现图片上传

    总结起来,Java实现图片上传涉及的关键技术有:文件操作(File类)、HTTP请求(Multipart编码)、服务器端文件处理(如Apache Commons FileUpload)、存储策略(文件系统或云存储)以及安全性与性能优化(如文件大小...

    java图片裁剪

    在Java编程语言中,图片裁剪是一项常见的图像处理任务,主要涉及到对图像的选取和截取,以便获得图像的一部分或按...理解基本概念,掌握常用库的使用,并了解如何优化和处理异常情况,是成功实现Java图片裁剪的关键。

    Java将图片合并为视频

    1. **图片读取**:使用Java的`BufferedImage`类读取图片文件,或者使用第三方库如`ImageIO`进行更高效的操作。 2. **帧序列创建**:将每张图片转换为FFmpeg可识别的帧格式,通常为JPEG或PNG。 3. **视频参数设置**:...

    Java 图片压缩

    以下是一个简单的Java图片压缩示例: ```java import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageCompressor { public ...

Global site tag (gtag.js) - Google Analytics