`

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
分享到:
评论

相关推荐

    javacv对图片进行文字提取,定位指定文字在图片的位置坐标,提高识别速度

    OCR 技术是一种将图像中的印刷体或手写体字符转换成机器可读格式的技术,常用于文档数字化、自动邮件分拣等领域。JavaCV 结合 OpenCV 可以实现这个功能,OpenCV 是一个开源的计算机视觉库,包含了丰富的图像处理和...

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

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

    java实现大图查找小图

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

    小图片打包成atlas大图片

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

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

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

    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字符串的编码方式,使得这些数据可以在文本格式的环境中(如电子...

Global site tag (gtag.js) - Google Analytics