`

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

    博客分类:
  • 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();
            }
        }
    }
}
 
分享到:
评论

相关推荐

    Android图片处理工具类

    base64的图片转化工具类,用于Android中的base64格式图片操作。图片转化成base64和base64字符串转化成图片

    javaweb项目常用工具包

    Base64工具类-字符编码工具类-数据类型转换-日期工具类-Escape中文转码工具类-fastjson工具类-文件工具类-Http工具类-http请求工具类-用于模拟HTTP请求中GET/POST方式 -图片处理工具类-Ip工具类-mail工具类-Map工具...

    ImageCombiner一个专门用于Java服务端图片合成的工具没有很复杂的功能简单实用

    图像处理资源ImageCombiner是一个专门用于Java服务端图片合成的工具,没有很复杂的功能,简单实用,从实际业务场景出发,提供简单的接口,几行代码即可实现图片拼合(当然用于合成水印也可以),素材上支持图片、...

    图片压缩小工具

    将图片按原宽高比压缩到指定大小的目标区域内,用于生成头像。 用户上传图片后,也可用该工具的功能压缩下,再存入数据库。

    公共方法类库dll,转换文件格式,处理字符串,处理图片,处理文件等

    此类库由Fly经一年多在一些实际开发项目中运用到的公共方法,特于今日整合在一起已备...16.Util.cs 专门的一个工具类如发送邮件、获取Webconfig信息、获取本类库程序集的信息等 17.还有access、mysql、oracle的dbhelper

    图片打标工具(windows)

    labelImag图片打标工具,用于方便地处理训练集图片的标注,可以用于分类标注、框选物体等操作。 labelImag图片打标工具,用于方便地处理训练集图片的标注,可以用于分类标注、框选物体等操作。

    图片处理,缩放和翻转

    图片缩放和等比缩放以及翻转的源代码,内有还有很多工具类用于处理图片的特性,如底片效果,锐化,饱和度,滤镜等~~

    10万+微博数据文件打包 可用于自然语言处理任务的数据集

    爬取的103个微博用户截止2019年8月发布的所有原创微博,以csv文件存储,每个用户对应一个csv文件。包括48位女性,55位男性,男女性分开存储。包括id、微博正文、微博原始图片URL、原始视频URL、发布日期、发布工具、...

    java_一些图片管理工具类的标准代码_android_bitmap转drawable_高斯模糊代码

    一些工具类代码块的标准代码,包括但不限于: 根据drawable id获取Bitmap 根据drawable id获取Drawable bitmap转drawable 获取资源图片 以最省内存的方式读取本地资源的图片 读取本地drawable中较大的资源图片 从文件...

    资源依赖检测工具+Animator辅助编辑工具

    里面有两个工具,一个用于查找和替换资源依赖,一个用于animator动态状态机辅助编辑。均属原创,在项目中使用能使开发更高效。由于这里不能发图片,就在下面简单的用文字介绍下: 一、资源检测工具的基本作用 1、...

    用 Java 编写一个图片识别工具 在 Java 中,你可以使用开源的图像处理库例如 OpenCV 或者 JavaCV 来实现图

    要运行这个示例代码,你需要执行以下步骤: 确保已经安装了 OpenCV,并且将其库添加到 Java 项目的类路径中。...请注意,这只是一个简单的示例,你可以根据自己的需求和应用场景进行更多的定制和改进。

    用C实现PHP扩展 Image_Tool 图片常用处理工具类的使用

    一、类文档说明 代码如下:class Image_Tool{ /** * 构造Image_Tool对象 * @param string|array $img_data * $img_data可以为图片的路径 */ function __construct($img_data=””); /** * 添加文字注解,或...

    Python批量自动化提取pdf中的嵌入式图片

    这个代码实现了一个功能强大的 PDF 图像提取工具,依赖于 fitz (PyMuPDF) 和 cv2 (OpenCV) 库,专门设计用来批量处理和提取PDF文件中的图片。它能够批量处理各种各样PDF 文件(两列式、单列式、图片式)中的嵌入式...

    美图秀秀(好用的一款图片工具)

    美图秀秀是一款很好用的免费图片处理软件,不用学习就会用。美图秀秀独有的图片特效、美容、拼图、场景、边框、饰品等功能,加上每天更新的精选素材,可以让你1分钟做出影楼级照片,还能一键分享到新浪微博、人人网...

    Excel图片百宝箱 v3.0.zip

    而且工具还添加了一个破解Excel密码的工具,非常的使用,绝对是经常使用Excel做数据报表之类的专业人士必备软件,您值得拥有! Excel图片百宝箱功能介绍 1.导入图片到当前列:包含“批量导入图片与图片名称”和...

    甩手工具箱 v2.72.06官方版.zip

    店铺复制是将一个店铺所有或者部分商品或者是按分类商品快速复制到另外一个店铺的工具,可以复制卖家自己或他人淘宝店、拍拍店中的商品到另外的拍拍店或者淘宝店中,实现快速开新店或上新货的目的。减轻卖家的负担,...

    图片选择工具

    本工具用于选择查看相片,选择喜欢的相片,把相片分类.特别适合出游后,对大量相片进行处理,或者分发给其他亲朋好友

    Excel新增工具集

    1、Word转Excel:把若干个Word文档中的表合并到Excel工作簿中的一个工作表中,可用于对下属填写的报名表(登记表)的汇总统计。 2、Excel转Word:把Excel工作簿的某个工作表中记录逐一拆分到对应的若干个Word文档中...

    EXCEL集成工具箱V6.0

    【插入批注背景】 可以选定任意一幅图片为批注背景来插入一个带图片背景的批注。可视化窗体操作,可随时更换批注样式,也支持批量多存储格样式修改。 【插入行数】 对工作表隔行插入行并可以复制标题行,其中对相隔...

    气泡数量统计代码,统计白色区域的数量、周长和面积

    代码功能: 该代码用于分析上传的黑白图像,统计白色区域的数量、周长和面积,并显示和保存结果。...该代码提供了一个简单易用的图像分析工具,可以用于统计黑白图像中白色区域的数量、周长和面积。

Global site tag (gtag.js) - Google Analytics