`

java 等比例缩略图

 
阅读更多

网上收了好几篇关于图像缩放的java文章, 都有明显的算法错误,大体思路倒是对的,细节决定成败!都是常规逻辑,根本就不考虑特殊情况,例如超扁等长条图片,明显处理都是错误的,正确的代码如下:

 

 

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

 

import javax.imageio.ImageIO;

 

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

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

 

public class Thumbnail {

    /**

     * 创建图片缩略图(等比缩放)

     * 

     * @param src

     *            源图片文件完整路径

     * @param dist

     *            目标图片文件完整路径

     * @param width

     *            缩放的宽度

     * @param height

     *            缩放的高度

     */

    public static void createThumbnail(String src, String dist, float width,

            float height) {

        try {

            File srcfile = new File(src);

            if (!srcfile.exists()) {

                System.out.println("文件不存在");

                return;

            }

            BufferedImage image = ImageIO.read(srcfile);

 

            // 获得缩放的比例

            double ratio = 1.0;

          // 判断如果高、宽都不大于设定值,则不处理,按变化率大的来缩放

          if (image.getHeight() > height || image.getWidth() > width) 

          {

     double ratiox = width / image.getWidth();

     double ratioy = height / image.getHeight();

     if(ratiox<ratioy)

     ratio = ratiox;

     else

     ratio = ratioy;

          }

 

            // 计算新的图面宽度和高度

            int newWidth = (int) (image.getWidth() * ratio);

            int newHeight = (int) (image.getHeight() * ratio);

 

            BufferedImage bfImage = new BufferedImage(newWidth, newHeight,

                    BufferedImage.TYPE_INT_RGB);

            bfImage.getGraphics().drawImage(

                    image.getScaledInstance(newWidth, newHeight,

                            Image.SCALE_SMOOTH), 0, 0, null);

 

            FileOutputStream os = new FileOutputStream(dist);

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);

            encoder.encode(bfImage);

            os.close();

 

            System.out.println("创建缩略图成功");

        } catch (Exception e) {

            System.out.println("创建缩略图发生异常" + e.getMessage());

        }

    }

 

    public static void main(String[] args) {

        createThumbnail("D:\\My Documents\\My Pictures\\goshopping.jpg", "D:\\My Documents\\My Pictures\\a.png", 300, 400);

        createThumbnail("D:\\My Documents\\My Pictures\\goshopping.jpg", "D:\\My Documents\\My Pictures\\b.png", 1400, 200);

        createThumbnail("D:\\My Documents\\My Pictures\\goshopping.jpg", "D:\\My Documents\\My Pictures\\c.png", 200, 1200);

    }

 

}

分享到:
评论

相关推荐

    java 图片生成缩略图

    "java 图片生成缩略图" Java 图片生成缩略图是Java程序开发中一个常见的需求,通过将图片以缩略图形式展示,可以提高用户体验和网站性能。在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 ...

    Java实现图片等比例缩略图

    Java作为一门广泛应用的编程语言,提供了多种方式来处理图像,包括生成等比例缩略图。本篇文章将深入探讨如何使用Java实现图片的等比例缩略图,并提供相关代码示例。 首先,我们需要了解等比例缩略图的概念。等比例...

    java图片缩放 java缩略图 缩略图 java图片处理

    java图片缩放 java缩略图 缩略图 java图片处理

    java 缩略图实现

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发等领域。这个主题涉及到如何利用Java的APIs来创建图片的缩小版本,以节省存储空间,提高页面加载速度,或者优化用户体验。...

    java生成缩略图

    生成缩略图的核心在于对原始图像进行等比例缩小处理,以保持图像的比例不变。在Java中,主要通过`java.awt.image.BufferedImage`类及其相关方法来实现。 ### Java生成缩略图的技术细节 #### 使用的关键类与方法 - ...

    Java 高清缩略图

    生成缩略图的关键在于等比例缩放,这能确保图像的纵横比保持不变,防止图像变形。在Java中,我们通常会先获取原始图片的宽度和高度,然后根据目标缩略图的尺寸计算出缩放比例。以下是一个简单的步骤概述: 1. **...

    java缩略图

    一个不错的工具类,上传的图片根据长宽的判断,按比例缩放生成另一张小图,可以减少浏览的浪费

    Struts2上传图片并生成等比例缩略图的实例

    在Struts2框架中,实现图片上传并生成等比例缩略图是一项常见的需求,尤其在构建Web应用时。本实例将向你展示如何利用Struts2的FileUpload拦截器处理图片上传,并通过Java图像处理库如Java AWT或Apache Commons ...

    java 生成缩略图

    在Java编程中,生成缩略图是一项常见的任务,特别是在处理图像处理、网页设计或移动应用开发时。这个任务涉及到读取原始图像,调整其尺寸,然后保存为较小的版本,即缩略图。在这个过程中,我们可以使用Java的内置库...

    java缩略图jar包

    在Java编程中,生成缩略图通常涉及到复杂的图像处理算法,包括图像重采样、比例调整、颜色空间转换等。thumbnailator库通过封装这些复杂操作,使得开发者只需要几行代码就能完成缩略图的创建。下面我们将深入探讨...

    动态缩略图实现方案

    在Java中实现动态缩略图涉及到图像处理和流媒体技术。下面我们将深入探讨这个话题。 首先,Java提供了丰富的API来处理图像,如Java Advanced Imaging (JAI)库和Java 2D API。在Java 2D API中,`java.awt.image`和`...

    java批量上传图片并生成缩略图

    在Java编程环境中,批量上传图片并生成缩略图是一项常见的需求,特别是在开发Web应用时,例如内容管理系统或者论坛。这个任务通常涉及到文件处理、图像处理和服务器端编程等多个技术领域。接下来,我们将深入探讨...

    ImageScale java 缩略图 算法

    缩略图是指按照一定的比例缩小原图尺寸的图片,通常用于预览或快速浏览。在Java中,生成缩略图主要涉及到图像处理库,如Java的`java.awt.image`和`javax.imageio`包。 `ImageScale`算法的核心在于如何有效地调整...

    java头像剪上传剪切设置大小,生成固定缩略图大小

    在Java编程语言中,处理图像任务,如头像剪切、上传、设置大小以及生成固定缩略图,是一项常见的需求。这些操作广泛应用于社交媒体、个人资料管理或任何需要用户自定义头像的系统中。本篇文章将深入探讨如何使用Java...

    上传图片(缩略图)

    - **保持比例**:为避免拉伸或变形,缩略图的生成通常会根据原图宽高比进行等比例缩放。 - **质量控制**:生成缩略图时,可以调整JPEG的压缩质量或PNG的压缩级别,以平衡图片质量与文件大小。 - **裁剪与填充**:...

    java生成缩略图.zip

    在这个"java生成缩略图.zip"压缩包中,我们可能找到了一份Java源代码,用于演示如何在Java环境下创建图像的缩略图。 首先,我们要了解在Java中生成缩略图的关键概念和技术。Java的`java.awt.image`和`javax.imageio...

    java,使用 phantomjs 生成网页截图,并用im4java生成缩略图,ImageMagick处理图片

    使用 phantomjs 和 im4java 生成网页缩略图,切图用的是ImageMagick,附送im4java调用ImageMagick处理图片代码,包括剪切、调整大小、调整到指定比例大小不足部分补白边。包含 phantomjs 包,不包含ImageMagick。

    ANDROID 获取最近的相片的缩略图

    生成缩略图则可以自由控制缩放比例和质量,但相对耗时。以下是使用requestThumbnail的示例: ```java long imageId = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID)); Uri thumbUri = Uri....

Global site tag (gtag.js) - Google Analytics