`

java 图片方面的处理

阅读更多

import java.awt.Image;

import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;

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

public class ImgManager1 {

	public static void main(String args[]) {
		ImgManager1.reduceImgGif("c:/testgif.gif", "c:/xufnew/test02.gif", 150, 200);

	}

	/**
	 * 图像缩放 jpg格式
	 * 
	 * @param imgsrc
	 *            :原图片文件路径
	 * @param imgdist
	 *            :生成的缩略图片文件路径
	 * @param widthdist
	 *            :生成图片的宽度
	 * @param heightdist
	 *            :生成图片的高度
	 */
	public static void reduceImg(String imgsrc, String imgdist, int widthdist,
			int heightdist) {
		try {
			File srcfile = new File(imgsrc);
			if (!srcfile.exists()) {
				return;
			}
			Image src = ImageIO.read(srcfile);

			BufferedImage tag = new BufferedImage((int) widthdist,
					(int) heightdist, BufferedImage.TYPE_INT_RGB);
			/*
			 * Image.SCALE_SMOOTH 的缩略算法  生成缩略图片的平滑度的
			 * 优先级比速度高 生成的图片质量比较好 但速度慢
			 */
			tag.getGraphics().drawImage(
					src.getScaledInstance(widthdist, heightdist,
							Image.SCALE_SMOOTH), 0, 0, null);
			
			FileOutputStream out = new FileOutputStream(imgdist);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			encoder.encode(tag);
			out.close();

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	
	public static void reduceImgGif(String imgsrc, String imgdist, int widthdist,
			int heightdist) {
		try {
			File srcfile = new File(imgsrc);
			if (!srcfile.exists()) {
				return;
			}
			Image src = ImageIO.read(srcfile);

			BufferedImage tag = new BufferedImage((int) widthdist,
					(int) heightdist, BufferedImage.TYPE_INT_RGB);
			/*
			 * Image.SCALE_SMOOTH 的缩略算法  生成缩略图片的平滑度的
			 * 优先级比速度高 生成的图片质量比较好 但速度慢
			 */
			tag.getGraphics().drawImage(
					src.getScaledInstance(widthdist, heightdist,
							Image.SCALE_SMOOTH), 0, 0, null);
			
//			FileOutputStream out = new FileOutputStream(imgdist);
//			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//			encoder.encode(tag);
//			out.close();
			ImageIO.write(tag, "gif", new File(imgdist));

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	
	/**
	 * 根据图片路径 读取图片文件
	 * @param fileName
	 * @return
	 */
	public static BufferedImage readImage(String fileName) {
		BufferedImage bi = null;
		try {
			bi = ImageIO.read(new File(fileName));
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		return bi;
	}

	/**
	 * 生成新的图片文件
	 * @param im
	 * @param formatName
	 * @param fileName
	 * @return
	 */
	public static boolean writeImage(RenderedImage im, String formatName,
			String fileName) {
		boolean result = false;
		try {
			result = ImageIO.write(im, formatName, new File(fileName));
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		return result;
	}

	/**
	 * 转换图片格式 到 jpg
	 * @param im
	 * @param fileName
	 * @return
	 */
	public static boolean writeJPEGImage(RenderedImage im, String fileName) {
		return writeImage(im, "JPEG", fileName);
	}

	/**
	 * 转换图片格式 到 gif  不知到好用不
	 * @param im
	 * @param fileName
	 * @return
	 */
	public static boolean writeGIFImage(RenderedImage im, String fileName) {
		return writeImage(im, "GIF", fileName);
	}

	public static boolean writePNGImage(RenderedImage im, String fileName) {
		return writeImage(im, "PNG", fileName);
	}

	public static boolean writeBMPImage(RenderedImage im, String fileName) {
		return writeImage(im, "BMP", fileName);
	}
}


分享到:
评论

相关推荐

    java高清处理图片

    传统的Java库虽然能够实现这些功能,但往往在图片质量方面不尽如人意,尤其是当图片尺寸被大幅度压缩时,画质下降明显,难以满足高清展示的需求。为了解决这一问题,本篇将详细介绍如何使用ImageMagick及其Java接口...

    java处理上传后的图片

    通过对给定代码的分析,我们可以看到Java在处理图片方面的能力非常强大,不仅支持多种图片格式的读写,还能实现灵活的图片尺寸调整。此外,还提供了一些最佳实践建议,希望对读者在实际开发中有帮助。

    java 图片水印 改变图片大小

    接下来,"改变图片大小"是图片处理的另一重要方面。Java的`ImageIO`和` BufferedImage`类提供了缩放图片的功能。我们可以使用`getScaledInstance`方法进行等比例缩放,或者通过`Graphics2D`的`drawImage`方法自定义...

    java图片浏览管理系统

    综上所述,"java图片浏览管理系统"是一个集成了多种Java技术的项目,涵盖了从基础编程到高级GUI设计的多个方面。它展示了如何利用Java的强大力量来解决实际问题,对于学习和实践Java开发的开发者来说,是一个很好的...

    java编写的图片浏览器

    总的来说,这个Java图片浏览器项目体现了面向对象编程的原则,结合了文件I/O、GUI设计和图片处理技术,展示了Java在开发桌面应用程序方面的强大能力。同时,其优化的内存管理策略使得该应用能够适应各种规模的图片...

    用Java实现的图片加密程序

    本项目"用Java实现的图片加密程序"正是关注这一主题,它利用Java的IO流处理技术,实现了对图片文件的加密和解密功能。以下是关于这个项目的一些详细知识点: 1. **Java IO流**:Java的IO流是处理输入输出的基础,它...

    java图片、文件处理

    总的来说,Java图片和文件处理涉及到广泛的技术和工具,从基础的Java API到强大的第三方库,都有助于开发者高效地完成相关任务。在实际开发中,根据项目需求选择合适的工具和方法,可以提升代码的可维护性和性能。

    java图片编辑工具

    Java图片编辑工具是一种基于Java编程语言开发的软件应用,它为用户提供了一种便捷的方式来处理和编辑图像文件。这种工具通常包含一系列功能,如裁剪、旋转、调整亮度和对比度、添加滤镜效果等,使得用户可以对图像...

    java 图片查看器

    总的来说,这个Java图片查看器项目涵盖了GUI设计、文件I/O、图像处理等多个Java编程的核心概念,对于学习和理解Java图形编程非常有帮助。通过分析和研究这个项目,开发者可以提升自己在Java GUI开发、图像处理等方面...

    java图片压缩文件大小图片大小(支持gif动态图)

    在Java编程语言中,处理图片压缩是一个常见的任务,特别是在网页开发、存储优化或者移动应用中。这个主题主要涉及如何利用Java来减少图片文件的大小,包括静态图片(如JPEG、PNG)以及动态图片(如GIF)。下面我们将...

    Java图片播放程序

    总的来说,这个Java图片播放程序展现了Java在图形用户界面开发和多媒体处理方面的能力。通过理解和学习这样的程序,开发者可以提升在GUI设计、事件处理、多线程控制以及文件操作等方面的技能。同时,这个程序也可以...

    java图片验证 制作java图片验证

    1. **Java 图形库**:创建验证码图片需要使用Java的图形处理库,如Java 2D API。它提供了一系列类和方法,可以用来绘制图形、文本、线条等,是实现验证码生成的基础。 2. **随机生成内容**:验证码的核心是其随机性...

    用JAVA实现远程图片批量下载

    Java作为一种广泛使用的编程语言,在实现远程图片批量下载方面具有以下优势: 1. **多线程机制**:Java提供了强大的多线程支持,可以高效地处理并发任务,比如同时下载多个图片。 2. **HTTP协议支持**:Java内置了...

    java图片管理器(对刚学JAVA的人的提升有帮助)

    总结来说,"Java图片管理器"是一个全面的实践项目,涵盖了Java桌面应用开发的多个重要方面,对于Java初学者来说,是一个极好的学习和锻炼平台。通过实际操作,不仅能熟悉Java Swing,还能掌握文件操作、多线程编程、...

    Java飞机大战图片素材

    综上所述,"Java飞机大战图片素材"项目涵盖了Java图形编程、图片资源管理、用户交互以及基本的图片处理等多个方面的知识,是学习和提升Java基础技能的良好实践。通过参与这样的项目,开发者不仅可以提升编程技巧,还...

    excel含图片导入 包含wps嵌入图片 java

    总结起来,"Excel含图片导入 包含WPS嵌入图片 Java"这个话题涵盖了Java编程、Excel文件处理、WPS图片嵌入以及使用Maven进行项目构建等多个方面。通过熟练掌握这些技术,开发者可以构建强大的数据处理工具,满足各种...

    java 拍照 截取图片

    综上所述,实现“java 拍照 截取图片”功能涉及了Java Web开发、多媒体处理、图像处理、设备访问等多个方面,需要结合Java标准库、第三方库以及Web技术来综合实现。在实际开发中,需要根据具体需求选择合适的技术栈...

    用java编写的图片处理和转换工具

    可能涉及到内存管理、多线程处理和算法优化等方面,以确保工具在处理大量或大尺寸图片时仍然高效。 10. **用户界面**:虽然描述没有明确提及,但一个完整的图片处理工具通常会有一个用户友好的界面,允许用户直观地...

    java图片加水印及图片加解密

    综上所述,这个压缩包提供的内容涵盖了Java图像处理的多个方面,包括加水印、图片加解密以及可能的水印加密技术,对于学习和实践Java图像处理的开发者来说是宝贵的资源。通过阅读代码和讲解文档,开发者可以更好地...

    java 图像处理资源 api

    - Java 2D API 自 JDK 1.5 起成为了 Java SE 平台的一部分,这标志着 Java 在图形处理方面的重要进展。 - **与 Java GUI 生态系统的集成:** Java 2D 为 Java 开发者提供了强大的绘图能力,特别是在构建具有复杂...

Global site tag (gtag.js) - Google Analytics