`

Java将大图片转成小图片

阅读更多
我们经常会将一个小的图片变成小一些的图片,利用java可以方便的实现,而且实现了这个功能后就可以实现更强大的功能,将一个文件夹中的所有图片都变成一个尺寸。这里提供一个将大图变成小图的方法。

并且提供一个根据这个方法的写好的一个:图片批量尺寸处理器。可以将一个文件夹下的所有图片,批量的按照一定尺寸都保存到另一个文件夹中。该工具在操作超大图片的时候会出现内存溢出的错误。功能简单也没有做太多出错处理,一般情况下挺好用的,大家将就着用吧。

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;


public class Temp01{
	
	private Temp01(){
		
	}
	
	private void imageOp(InputStream inFile, String outFilePath, int width, int height){
		Image image = null;
		try {
			image = ImageIO.read(inFile);
		} catch (IOException e) {
			System.out.println("file path error...");
		}
		
		int originalImageWidth = image.getWidth(null);
		int originalImageHeight = image.getHeight(null);
		
		BufferedImage originalImage = new BufferedImage(
				originalImageWidth,
				originalImageHeight,
				BufferedImage.TYPE_3BYTE_BGR);
		Graphics2D g2d = originalImage.createGraphics();
		g2d.drawImage(image, 0, 0, null);
		
		BufferedImage changedImage =
			new BufferedImage(
					width,
					height,
					BufferedImage.TYPE_3BYTE_BGR);
		
		double widthBo = (double)width/originalImageWidth;
		double heightBo = (double)width/originalImageHeight;
		
		AffineTransform transform = new AffineTransform();
		transform.setToScale(widthBo, heightBo);
		
		AffineTransformOp ato = new AffineTransformOp(transform, null);
		ato.filter(originalImage, changedImage);
		
		File fo = new File(outFilePath); //将要转换出的小图文件 

		try {
			ImageIO.write(changedImage, "jpeg", fo);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void imageOp(String inFilePath, String outFilePath, int width, int height){
		File tempFile = new File(inFilePath);
		Image image = null;
		try {
			image = ImageIO.read(tempFile);
		} catch (IOException e) {
			System.out.println("file path error...");
		}
		
		int originalImageWidth = image.getWidth(null);
		int originalImageHeight = image.getHeight(null);
		
		BufferedImage originalImage = new BufferedImage(
				originalImageWidth,
				originalImageHeight,
				BufferedImage.TYPE_3BYTE_BGR);
		Graphics2D g2d = originalImage.createGraphics();
		g2d.drawImage(image, 0, 0, null);
		
		BufferedImage changedImage =
			new BufferedImage(
					width,
					height,
					BufferedImage.TYPE_3BYTE_BGR);
		
		double widthBo = (double)width/originalImageWidth;
		double heightBo = (double)width/originalImageHeight;
		
		AffineTransform transform = new AffineTransform();
		transform.setToScale(widthBo, heightBo);
		
		AffineTransformOp ato = new AffineTransformOp(transform, null);
		ato.filter(originalImage, changedImage);
		
		File fo = new File(outFilePath); //将要转换出的小图文件 

		try {
			ImageIO.write(changedImage, "jpeg", fo);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) throws FileNotFoundException {
		Temp01 t1 = new Temp01();
		t1.imageOp("C:/p02.jpg", "C:/p03.jpg", 400, 300);

		InputStream in = new FileInputStream(new File("C:/p02.jpg"));
		t1.imageOp(in, "C:/p04.jpg", 400, 300);

	}
	
}


文章地址:http://javapub.iteye.com/blog/666607

相关文章
Java图像图片 边缘检测 http://javapub.iteye.com/blog/685468
Java图像变灰 http://javapub.iteye.com/blog/687082
Java 给图片增加 水印图片 水印文字 [url]Java 给图片增加 水印图片 水印文字[/url]
Java图像渐变 http://javapub.iteye.com/blog/736799
Java将大图片转成小图片 http://javapub.iteye.com/blog/666607
分享到:
评论

相关推荐

    java 水印(水印适应图片大小,但个别图片太小不支持)

    本知识点主要探讨如何在Java中实现自适应图片大小的水印功能,以及遇到图片过小时的处理策略。 首先,我们需要理解水印的基本概念。水印是在图像或文档上添加的一种视觉标记,它可以是文字、图像或者图形,用于表明...

    小图片打包成atlas大图片

    综上所述,将小图片打包成atlas大图片是优化游戏性能的关键步骤,LibGDX为此提供了强大的支持。通过使用atlas-packer这样的工具,结合LibGDX的TextureAtlas类,开发者可以高效地管理游戏中的图形资源,从而提升游戏...

    java实现大图查找小图

    本篇文章将详细探讨如何利用Java实现这一功能,以及相关的核心概念和技术。 首先,我们需要理解基本的图像处理概念。图像可以被视为二维数组,其中每个元素代表一个像素,包含颜色信息(RGB值)。在Java中,我们...

    图集切割工具(命令行切割图集,单张大图片,自动识别,切割成许多小图片)

    本压缩包提供的是一款命令行工具,名为"imageSplit.jar",用于切割图集,将单张大图片自动识别并分割成许多小图片。这样的设计使得开发者可以在没有图形用户界面的情况下,通过命令行操作完成任务,这对于自动化工作...

    java生成缩略小图片类.doc

    ### Java生成缩略小图片类知识点解析 #### 一、概览 本文档介绍了一个用于Java项目的类——`Small_pic`,它能够帮助开发者轻松地处理图像,特别是生成缩略图的功能。该类包含了丰富的注释,使得即使是初学者也能...

    Web 开发常用的小图片

    1. 图片合并与雪碧图(Sprite Sheets):为了减少HTTP请求次数,提高页面加载速度,可以将多个小图片合并成一张大图,然后通过CSS定位显示需要的部分,这种方法称为雪碧图技术。 2. CSS背景精灵:与雪碧图类似,...

    图片大小转换器

    通过它,你可以迅速地将大图片转换成小图片,避免了在Photoshop等专业软件中进行繁琐的裁剪和保存步骤。这对于那些需要频繁处理图片,但又不具备专业图像编辑技能的用户来说,无疑是一个极大的便利。 【标签】...

    struts2 上传图片时对图片进行压缩, 生成一张小图片

    生成小图片可能是通过调整原图的尺寸,或者直接裁剪大图的一部分。这里也可以用到`Scalr`库,或者使用`AffineTransformOp`来实现。小图片的目的是在网页上快速加载和显示,所以通常尺寸较小且质量适中。 6. **...

    安卓图片加载缓存相关-andengine中直接加载多张小图片合成一张大图片生成动画精灵.rar

    本教程主要探讨如何在AndEngine中直接加载多张小图片,并将它们合成一张大图片,生成动画精灵。 首先,我们需要理解AndEngine中的精灵和动画概念。精灵是2D游戏中的基本元素,它可以是一个静态的图片或者一个动态的...

    安卓Android源码——andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    这些工具可以将多张小图片拼接成一张大图片,并生成对应的XML描述文件,记录每张小图片在大图中的位置和大小。XML文件在AndEngine中被用于解析和加载Texture Atlas。 2. 加载Texture Atlas: 在AndEngine中,我们...

    Android应用源码之andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    本压缩包中的内容主要涉及如何使用AndEngine来直接加载多张小图片,并将它们合成一张大图片,进而生成动画精灵。下面我们将详细探讨这一技术。 首先,我们需要理解AndEngine中的精灵(Sprite)概念。精灵是2D游戏中...

    Android高级应用源码-andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    本压缩包中的源码示例是关于如何利用AndEngine来实现一个高级功能:直接加载多张小图片并将其合成为一张大图片,进而生成动画精灵。这个技术在游戏开发中极为常见,用于制作角色移动、攻击等动态效果。 首先,我们...

    图片保存在数据库

    这个知识点讲解了如何将图片压缩后保存在数据库中,并详细解释了图片压缩、图片存储在数据库、使用 Java 保存图片到数据库、数据库表字段、Java 图片处理、数据库字段存储图片和小图片存储在数据库的过程。

    使用java程序编写的拼图游戏

    所谓拼图游戏,是指将一个完整的图片分割成若干个规则的小图片,然后将这些小图片随机地拼在一起,然后由玩家按照原图重新拼接出正确的图片。 三、设计思路 通过单击与空白网格相邻的网格,可以将该网格显示的图片...

    基于JAVA的拼图小游戏源码.zip

    首先将一张大图分为9块小图片,而后将小图片封装在一个类(继承JButton)因此每张图片都为一个按扭 public class Cell extends JButton { private static final long serialVersionUID = 8290188097137862984L; ...

    andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    本文将深入探讨如何在AndEngine中利用多张小图片合成一张大图,进而创建动画精灵,实现流畅的游戏动画效果。 一、精灵(Sprites)与纹理集(Texture Atlas) 在2D游戏开发中,精灵是可移动或旋转的图像对象,用于...

    应用源码之andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    这个压缩包中的源码是关于如何使用AndEngine将多张小图片合成一张大图片,进而创建出动画精灵。下面将详细解释这一过程中的关键知识点。 1. **AndEngine基础**: AndEngine是一个开源的Java库,专门为Android平台...

    Java实现图片与Base64编码互转

    在Java编程中,将图片与Base64编码进行互转是一种常见的操作,特别是在网页开发、数据传输和存储中。Base64编码是一种用于将二进制数据转化为ASCII字符串的编码方式,使得这些数据可以在文本格式的环境中(如电子...

    java压缩图片程序代码

    * 压缩图片文件 * 先保存原文件,再压缩、上传 * @param oldFile 要进行压缩的文件全路径 * @param width 宽度 * @param height 高度 * @param quality 质量 * @param smallIcon 小图片的后缀 * @return ...

Global site tag (gtag.js) - Google Analytics