`

一个用于图片处理的工具类

    博客分类:
  • Java
阅读更多

其中包括图片与字节流的相互转换,获取图片类型,图片大小,图片长宽等:

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

import org.apache.commons.codec.binary.Base64;

/**
 * This utility class is used for HTTP access operation, like URL encoding.
 *
 * @author Leo.zhou
 *
 */
public class CommonUtils {

    /**
     * Convert byte stream base on base64 format to file
     * 
     * @param stream, byte stream base on base64
     * @return file convert from byte stream
     * @throws IOException 
     */
    public static File convertToFileFromBase64(String stream, String path) throws IOException {
        byte[] bytes = stream.getBytes("ASCII");
        byte[] decoded = Base64.decodeBase64(bytes);
        File file = new File(path);
        File parent = file.getParentFile();
        if (parent != null && !parent.exists()) {
            parent.mkdirs();
        }
        file.createNewFile();
        OutputStream os = new FileOutputStream(file);
        try {
            ByteArrayInputStream buffer = new ByteArrayInputStream(decoded);
            byte[] barr = new byte[1024];
            while(true) {
                int r = buffer.read(barr);
                if(r <= 0) {
                    break;
                }
                os.write(barr, 0, r);
            }
        } finally {
            os.close();
        }
        return file;
    }

    /**
     * Convert file to byte stream base on base64 format
     * 
     * @param file file in file system
     * @return byte stream convert from file
     * @throws IOException
     */
    public static String convertToBase64FromFile(File file) throws IOException {
        InputStream in = new FileInputStream(file);
        byte[] bytes = null;
        try {
            ByteArrayOutputStream buffer = new ByteArrayOutputStream();
            byte[] barr = new byte[1024];
            while (true) {
                int r = in.read(barr);
                if (r <= 0) {
                    break;
                }
                buffer.write(barr, 0, r);
            }
            bytes = buffer.toByteArray();
        } finally {
            in.close();
        }
        //All chars in encoded are guaranteed to be 7-bit ASCII
        byte[] encoded = Base64.encodeBase64(bytes);
        return new String(encoded, "ASCII");
    }

    /**
     * Get image file format type
     * 
     * @param imageFile image file
     * @return image type
     * @throws IOException
     */
    public static String getImageFormatName(File imageFile) throws IOException {
        ImageInputStream iis = null;
        try {
            iis= ImageIO.createImageInputStream(imageFile);
            // Find all image readers that recognize the image format
            Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
            if(iter == null || !iter.hasNext()) {
                throw new IOException("image format error");
            }
            ImageReader reader = iter.next();
            // Return the format name
            return reader.getFormatName().toUpperCase();
        } finally {
            if(iis != null) {
                iis.close();
            }
        }
    }

    /**
     * Get image dimension
     * 
     * @param imageFile image file
     * @return image dimension
     * @throws IOException
     */
    public static String getImageDimension(File imageFile) throws IOException {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(imageFile);
            BufferedImage sourceImg = ImageIO.read(fis);
            if(sourceImg == null) {
                throw new IOException("image format error");
            }
            String dimension = sourceImg.getWidth() + "*" + sourceImg.getHeight();
            return dimension;
        } finally {
            if(fis != null) {
                fis.close();
            }
        }
    }

    /**
     * Get file size
     * 
     * @param File file
     * @return file size
     * @throws IOException
     */
    public static Integer getFileSize(File file) throws IOException {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(file);
            return fis.available();
        } finally {
            if(fis != null) {
                fis.close();
            }
        }
    }
}
 
分享到:
评论

相关推荐

    图片处理工具类

    图片处理工具类会优化这个过程,确保在不失真的情况下尽可能地减少内存占用。 4. **内存管理**: Android系统对每个应用程序分配了有限的内存,因此处理大图片时需要特别注意内存管理。工具类可能会使用流式处理、...

    java图片处理工具类

    在Java编程语言中,处理图片是一项常见的任务,尤其在网页开发、移动应用或者图形用户界面设计中。本篇文章将深入探讨如何使用Java...通过深入理解这些技术,我们可以创建出强大的图片处理工具类,满足日常开发需求。

    Android图片处理工具类

    本文将详细讨论如何使用基于base64的图片处理工具类,以实现图片与base64字符串之间的转换。 首先,我们要理解什么是base64。Base64是一种用于将任意二进制数据编码为ASCII字符的编码方式,它主要应用于邮件系统、...

    图片下载工具类

    综上所述,"图片下载工具类"涉及了Android开发中的网络请求、多线程、内存管理、文件操作、图片处理等多个核心领域,是一个功能完备且高效的组件,对于任何需要展示网络图片的应用都是不可或缺的。

    Android图片处理工具类BitmapUtils

    【Android图片处理工具类BitmapUtils】是Android应用开发中用于高效管理和操作Bitmap对象的一个实用工具类。Bitmap在Android系统中是表示图像数据的核心类,它提供了丰富的图像处理功能,但处理不当可能导致内存溢出...

    剪切图片的工具类

    本主题将详细探讨一个名为“剪切图片的工具类”的功能,它主要用于对图片进行剪切和缩放操作。这类工具类在编程中通常会提供一系列方法,帮助开发者实现对图像的精确操作。 首先,我们需要理解“剪切”图片的概念。...

    图片缓存工具类

    这个“图片缓存工具类”很可能是一个自定义的Java或Kotlin类,用于Android平台,或者是Swift或Objective-C类用于iOS平台,它的设计目标是高效地管理和存储图片,减少网络请求,降低服务器压力,并减少用户等待时间。...

    图片裁剪、缩放工具类

    通常,这两个文件都可能包含类定义,其中ImgUtils可能是主要的图片处理工具类,而ImgUtils1可能是其扩展或者另一种实现方式。在这些类中,我们可以期待找到以下核心方法: 1. 图片裁剪(Crop):裁剪图片到指定的...

    bitmap图片处理工具类

    总之,Bitmap图片处理工具类是Android开发中的一个重要组件,它涵盖了图片处理的多个核心功能。理解和熟练运用这些知识点,对于提升应用程序的用户体验和视觉效果有着至关重要的作用。开发者可以根据具体需求,灵活...

    文件处理与图片处理工具类

    这里提到的"文件处理与图片处理工具类"包括Base64Util、FileUtil、GsonUtil和HttpUtil这四个关键工具,它们分别对应了数据编码、文件操作、JSON解析和网络请求的基本功能。 首先,Base64Util是一个用于Base64编码和...

    一个图片压缩处理工具

    这个名为“一个图片压缩处理工具”的项目,显然专注于使用JavaScript技术来优化和管理图片资源,尤其适用于网页和应用程序中的图片展示。JavaScript作为一种广泛应用于前端开发的脚本语言,其在图片处理领域的应用...

    java图片加水印工具类

    在使用这个工具类时,开发者需要先创建一个实例,然后调用对应的方法设置水印属性,最后调用一个方法(如`addWatermark()`)来执行添加水印的操作,并保存处理后的图片。例如: ```java WatermarkTool watermark = ...

    Java图片验证码工具类

    Java图片验证码工具类是一种在Web应用中用于防止恶意自动化操作(如...通过以上知识点,你可以了解一个Java图片验证码工具类的基本设计和功能。这个工具类可以有效地帮助Web应用增强安全性,防止自动化的恶意活动。

    java裁剪、缩放图片工具类

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

    android工具类 26个实用工具类

    5. **图片处理工具类**:可能包括图片的加载、缩放、裁剪、圆角处理等功能,如`ImageUtil`,可以优化图片加载的性能,避免内存溢出。 6. **文件操作工具类**:如`FileUtil`,提供文件的创建、删除、复制、移动、...

    ffmpeg java 封装工具类,音视频处理.zip

    FFmpeg 是一个强大的开源命令行工具,用于处理音频和视频文件。它支持各种编码、解码、转换、流媒体操作,以及许多其他功能。在Java开发中,通过封装FFmpeg命令,可以方便地在应用程序中集成音视频处理功能。本...

    一个发送邮件的工具类

    5. **`SendEmailUtils.txt`**: 这个文件可能是源代码文件或者一个包含示例代码的文本文件,用于展示如何使用这个邮件工具类。文件中可能包含了类定义、方法声明,以及必要的注释来解释如何配置和使用这个工具类。 6...

    Android快速开发系列 10个常用工具类 程序源码

    3. **BitmapUtil**: 图片处理工具类,用于处理图片的加载、缩放、裁剪、压缩等。在Android应用中,图片的优化对于性能和用户体验至关重要,因此BitmapUtil能够减少内存消耗,防止OOM(内存溢出)问题。 4. **...

    android图片处理工具

    本篇将深入探讨Android图片处理工具的相关知识点,帮助开发者更好地理解和运用这些工具。 首先,Android SDK本身提供了基本的图片处理能力,例如Bitmap类,它是Android中处理图像的基础。Bitmap可以用来加载、创建...

Global site tag (gtag.js) - Google Analytics