`
沉睡的鱼
  • 浏览: 71507 次
  • 性别: Icon_minigender_2
  • 来自: 石家庄
社区版块
存档分类
最新评论

java中对图片进行压缩以及放大。

阅读更多

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;

import javax.imageio.ImageIO;

public class ImageUtils
{

    /**
     * 对图片进行放大
     *
     * @param originalImage 原始图片
     * @param times 放大倍数
     * @return
     */
    public static BufferedImage zoomInImage(BufferedImage originalImage, Integer times)
    {
        int width = originalImage.getWidth() * times;
        int height = originalImage.getHeight() * times;
        BufferedImage newImage = new BufferedImage(width, height, originalImage.getType());
        Graphics g = newImage.getGraphics();
        g.drawImage(originalImage, 0, 0, width, height, null);
        g.dispose();
        return newImage;
    }

    /**
     * 对图片进行放大
     *
     * @param srcPath 原始图片路径(绝对路径)
     * @param newPath 放大后图片路径(绝对路径)
     * @param times 放大倍数
     * @param format 图片格式
     * @return 是否放大成功
     */
    public static boolean zoomInImage(String srcPath, String newPath, Integer times, String format)
    {
        BufferedImage bufferedImage = null;
        try
        {
            File of = new File(srcPath);
            if (of.canRead())
            {
                bufferedImage = ImageIO.read(of);
            }
        } catch (IOException e)
        {
            // TODO: 打印日志
            return false;
        }
        if (bufferedImage != null)
        {
            bufferedImage = zoomInImage(bufferedImage, times);
            try
            {
                // TODO: 这个保存路径需要配置下子好一点
                ImageIO.write(bufferedImage, format, new File(newPath)); // 保存修改后的图像
            } catch (IOException e)
            {
                // TODO 打印错误信息
                return false;
            }
        }
        return true;
    }

    /**
     * 对图片进行缩小
     *
     * @param originalImage 原始图片
     * @param times 缩小倍数
     * @return 缩小后的Image
     */
    public static BufferedImage zoomOutImage(BufferedImage originalImage, int timeshieght)
    {
        int width = originalImage.getWidth() / timeshieght;
        int height = originalImage.getHeight() / timeshieght;
        BufferedImage newImage = new BufferedImage(width, height, originalImage.getType());
        Graphics g = newImage.getGraphics();
        g.drawImage(originalImage, 0, 0, width, height, null);
        g.dispose();
        return newImage;
    }

    /**
     * 对图片进行缩小
     *
     * @param srcPath 源图片路径(绝对路径)
     * @param newPath 新图片路径(绝对路径)
     * @param times 缩小倍数
     * @param format 图片格式
     * @return 保存是否成功
     */
    public static boolean zoomOutImage(String srcPath, String newPath, int timeshieght,
        String format)
    {
        BufferedImage bufferedImage = null;
        try
        {
            File of = new File(srcPath);
            if (of.canRead())
            {
                bufferedImage = ImageIO.read(of);
            }
        } catch (IOException e)
        {
            // TODO: 打印日志
            return false;
        }
        if (bufferedImage != null)
        {
            bufferedImage = zoomOutImage(bufferedImage, timeshieght);
            try
            {
                // TODO: 这个保存路径需要配置下子好一点
                ImageIO.write(bufferedImage, format, new File(newPath)); // 保存修改后的图像,全部保存为JPG格式
            } catch (IOException e)
            {
                // TODO 打印错误信息
                return false;
            }
        }
        return true;
    }

    public static int getHeight(String path)
    {
        BufferedImage bufferedImage = null;
        int height = 0;
        try
        {
            bufferedImage = ImageIO.read(new File(path));
        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        height = bufferedImage.getHeight();
        return height;
    }

    public static void main(String[] args)
    {
        int heighttimes = (new BigDecimal((double) ImageUtils.getHeight("E:/1.bmp") / (double) 260)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
        int heighttime = (new BigDecimal( (double) 260 / ImageUtils.getHeight("E:/bell_add.png"))).setScale(0, BigDecimal.ROUND_HALF_UP)
            .intValue();
        boolean testIn = zoomInImage("E:/bell_add.png", "E:\\in2.jpg", heighttime, "png");
        if (testIn)
        {
            System.out.println("in ok");
        }
        // boolean testOut = zoomOutImage("E:/11.jpg", "E:\\out.jpg",
        // heighttimes, "jpg");
        // if (testOut)
        // {
        // System.out.println("out ok");
        // }

    }

}
分享到:
评论

相关推荐

    Java处理图片(压缩,放大,缩小)

    Java thumbnailator 处理图片(压缩,放大,缩小)

    java web 图片压缩

    本项目专注于图片的压缩功能,提供了简单易用的API,可以对图片进行缩放和降质处理,并且支持批量操作。下面将详细介绍这个项目涉及的关键知识点。 1. **Java图像处理库**: - Java标准库中的`java.awt.image`和`...

    java处理图片大小等比例缩放,自定义修改图片大小,截取,水印

    在Java编程语言中,处理图片是一项常见的任务,包括调整图片大小、等比例缩放、裁剪、压缩以及添加水印等。以下将详细介绍这些知识点: 1. **等比例缩放图片**: 在Java中,我们可以使用`java.awt.image....

    压缩图片不失真,c# asp.net

    在IT行业中,图片压缩是一个非常重要的技术,尤其是在网络应用、存储和传输方面。本文将深入探讨如何使用C#和ASP.NET实现图片的无损压缩,同时保持图片的清晰度最佳。 首先,我们要理解图片压缩的基本原理。图片...

    详解Java中使用ImageIO类对图片进行压缩的方法

    在Java中,对图片进行压缩和处理是一项常见的任务,特别是在开发涉及到图像上传、展示或者存储的应用程序时。`ImageIO` 类是Java标准库中用于读取、写入和处理图像的重要工具,它提供了灵活且高效的图像处理功能。...

    java图片处理类

    这是一个java生成随即图片验证码,java图片压缩,java图片水印 ,java图片裁剪 ,java图片旋转 ,java图片放大缩小等工具类,里面有测试方法,欢迎使用!

    java源码包---java 源码 大量 实例

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    图片压缩,等比例放缩图片

    2. 应用缩放:使用图像处理库(如Python的PIL或Java的ImageIO)应用这个比例因子,对图片进行缩放。 三、强制压缩/放大图片到固定大小 有时,我们可能需要将图片强制压缩到特定的尺寸,这可能导致图片质量下降。...

    java裁剪、缩放图片工具类

    总的来说,这个工具类提供了一个简洁的接口,使得开发者能够方便地在Java应用中对图像进行裁剪和缩放操作,而无需深入理解底层的图像处理细节。测试类则确保了这些操作的正确性和稳定性。在实际项目中,这样的工具类...

    java 图片处理,水印,缩放,放大,叠加等功能

    在Java编程语言中,处理图片是一项常见的任务,涵盖了多种功能,如添加水印、缩放、放大以及图像的叠加操作。这些功能对于开发图形用户界面(GUI)应用、网站、移动应用或者任何需要处理视觉元素的项目至关重要。...

    图片放大缩小

    Java中的Java AWT和Swing库,以及JavaScript的Canvas API也提供了类似的功能。 在压缩包中的`TestImageZoom`可能是一个示例程序或代码片段,展示了如何进行图片的缩放操作。这个例子可能是用一种编程语言编写,通过...

    Android中照相,从相册选取照片,压缩,保存到手机内存,展示到界面,点击放大,上传demo

    在Android应用开发中,涉及到用户交互的图像处理是常见的需求,比如拍照、选择相册中的图片、图片压缩、保存到本地以及在界面上展示和上传等操作。以下将详细讲解这些知识点。 1. **调用相机接口**: Android提供...

    java源码包实例源码JAVA开发源码55个合集.zip

    Java写的图片幻灯片切换特效.rar Java写的天气预报软件.rar Java写的巨型LCD液晶时钟显示屏.rar JAVA图书馆管理系统源码.rar Java图像文件的缩小与放大.rar Java学生信息管理系统源码包.rar Java推箱子游戏(50关+...

    JAVA缩放图片.txt

    为了让上传的图片能够适应不同的展示环境,如网页、移动应用等,通常需要对图片进行尺寸调整。本文将详细介绍如何使用Java语言来实现图片的缩放功能。 #### 一、Java实现图片缩放的重要性 随着多媒体内容的日益...

    java源码包实例源码JAVA开发源码50个合集.zip

    Java实现的放大镜效果附有源文件.rar Java实现的点对点短消息发送协议(smpp)开发包源码.rar Java实现的视频播放程序源码.rar Java实现移动的遮照效果.rar JAVA实现超级玛丽.zip Java实现跟踪鼠标运行坐标的源码.rar ...

    java源码包3

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    photoView图片多点触控放大缩小

    在这个场景下,`photoView`提供了类似系统相册的功能,允许用户通过双指手势对图片进行放大、缩小操作,提升用户体验。 `photoView`通常是一个自定义的ImageView子类,它扩展了原生Android的ImageView功能,增加了...

    java源码包2

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java图片处理工具类

    在Java开发中,对图片进行处理是一项常见的需求,比如在Web应用中,我们可能需要对用户上传的图片进行压缩、裁剪、添加水印等操作。`ImageUtils`类正是为了解决这类问题而设计的一个工具类。该类提供了丰富的图片...

    Thumbnailator图片压缩Demo以及jar包

    在这个"Thumbnailator图片压缩Demo以及jar包"中,包含的主要内容是thumbnailator-0.4.8.jar库文件和一个示例代码ThumbnailatorDemo.java。 thumbnailator-0.4.8.jar是Thumbnailator库的核心组件,包含了所有用于...

Global site tag (gtag.js) - Google Analytics