java图片缩放的两种方式

 

    在java项目中针对图片的缩放功能目前好像有两种实现方式:

第一种采用SUN公司类库JPEGImageEncoder 实现:

重要代码如下:

	/**
	 * 
	 * 备注:ImageIO从JDK1.4
	 * 创建图片的方法
	 * @param file
	 * @param outfile
	 */
	public static void createImageBySun(File file,File outfile) {
		try {
			
			//源图片
			Image src=ImageIO.read(file);
			int w=src.getWidth(null);
			int h=src.getHeight(null);
			int new_w=(int)Math.round(w*0.2);
			int new_h=(int)Math.round(h*0.2);
			
			BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
		    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);        //绘制缩小后的图
			FileOutputStream newimage = new FileOutputStream(outfile);
			//采用SUN公司的图片库读创建图片文件
			//在maven中可能编译不通过,可以使用ImageIO写入文件
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);       
			encoder.encode(tag);                                                //近JPEG编码
		    newimage.close();  
		} catch (Exception e) {
		}           
	}

 

第二种采用ImgeIO:

/**
	 * 备注:ImageIO从JDK1.4,JDK包含GIF,JPEG,PNG但是不支持GIF
     * 创建图片的方法
	 * @param file
	 * @param outfile
	 */
	public static void createImageByImageIo(File file,File outfile,String imageFormat) {
		try {
			//源图片
			Image src=ImageIO.read(file);
			int w=src.getWidth(null);
			int h=src.getHeight(null);
			int new_w=(int)Math.round(w*0.2);
			int new_h=(int)Math.round(h*0.2);
			BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
		    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);        //绘制缩小后的图
			FileOutputStream newimage = new FileOutputStream(outfile);
			//在maven中可能编译不通过,可以使用ImageIO写入文件
			ImageIO.write(tag, imageFormat, newimage);
		    newimage.close();  
		} catch (Exception e) {
		}           
	}

 

 

完整代码如下:

package com.easyway.commons.ispace.dev.lang;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

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

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
 * 图片的工具类
 * @author Administrator
 * @date 2010-5-6
 * @version 1.0
 * @since JDK6.0
 */
public class ImageUtils {
	/**
	 * 
	 * 备注:ImageIO从JDK1.4
	 * 创建图片的方法
	 * @param file
	 * @param outfile
	 */
	public static void createImageBySun(File file,File outfile) {
		try {
			
			//源图片
			Image src=ImageIO.read(file);
			int w=src.getWidth(null);
			int h=src.getHeight(null);
			int new_w=(int)Math.round(w*0.2);
			int new_h=(int)Math.round(h*0.2);
			
			BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
		    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);        //绘制缩小后的图
			FileOutputStream newimage = new FileOutputStream(outfile);
			//采用SUN公司的图片库读创建图片文件
			//在maven中可能编译不通过,可以使用ImageIO写入文件
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);       
			encoder.encode(tag);                                                //近JPEG编码
		    newimage.close();  
		} catch (Exception e) {
		}           
	}
	
	
	/**
	 * 备注:ImageIO从JDK1.4,JDK包含GIF,JPEG,PNG但是不支持GIF
     * 创建图片的方法
	 * @param file
	 * @param outfile
	 */
	public static void createImageByImageIo(File file,File outfile,String imageFormat) {
		try {
			//源图片
			Image src=ImageIO.read(file);
			int w=src.getWidth(null);
			int h=src.getHeight(null);
			int new_w=(int)Math.round(w*0.2);
			int new_h=(int)Math.round(h*0.2);
			BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
		    tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);        //绘制缩小后的图
			FileOutputStream newimage = new FileOutputStream(outfile);
			//在maven中可能编译不通过,可以使用ImageIO写入文件
			ImageIO.write(tag, imageFormat, newimage);
		    newimage.close();  
		} catch (Exception e) {
		}           
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java与LaTeX都是非常常用的工具,在许多领域中都有广泛的应用。当涉及到生成图片时,可以结合这两个工具来实现。 LaTeX是一种排版系统,广泛用于科技论文、数学公式、技术文档等领域。它通过使用特定的命令和语法,可以生成高质量的排版效果。LaTeX可以生成各种格式的文件,包括PDF和EPS等,其中EPS是一种矢量图形格式。 Java是一种面向对象的编程语言,拥有强大的图形处理能力和丰富的类库。在Java中,可以使用一些类库来处理LaTeX生成的EPS文件。例如,可以使用Java的图像处理库或第三方库,读取EPS文件,进行修改或添加绘图操作,然后将结果另存为PNG、JPEG或其他常见图片格式。 具体而言,可以使用Java的ImageIO类库来读取和处理EPS文件,使用Graphics2D类来进行绘图操作,如绘制线条、填充颜色等。另外,还可以使用Java提供的Font类来设置字体样式等参数。 在处理LaTeX生成的EPS文件时,需要注意EPS是一种矢量图形格式,可以无损地缩放和调整大小。因此,在将EPS转换为其他常见图片格式时,应该选择合适的分辨率和图片质量,以确保生成的图片保持清晰而细致的细节。 总结起来,通过结合Java和LaTeX,可以实现生成图片的需求。可以使用Java读取和处理LaTeX生成的EPS文件,进行绘图等操作,最后将结果另存为常见的图片格式。这样的应用可以在科技论文、技术文档等领域中发挥重要作用,提高排版效果和图形展示质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值