package com.binghe.pub.util;
import java.io.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.applet.*;
//缩略图类,
//本java类能将jpg图片文件,进行等比或非等比的大小转换。
//具体使用方法
//s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
public class SmallPic {
String InputDir; // 输入图路径
String OutputDir; // 输出图路径
String InputFileName; // 输入图文件名
String OutputFileName; // 输出图文件名
int OutputWidth = 80; // 默认输出图片宽
int OutputHeight = 80; // 默认输出图片高
int rate = 0;
boolean proportion = true; // 是否等比缩放标记(默认为等比缩放)
public SmallPic() {
// 初始化变量
InputDir = "";
OutputDir = "";
InputFileName = "";
OutputFileName = "";
OutputWidth = 80;
OutputHeight = 80;
rate = 0;
}
public void setInputDir(String InputDir) {
this.InputDir = InputDir;
}
public void setOutputDir(String OutputDir) {
this.OutputDir = OutputDir;
}
public void setInputFileName(String InputFileName) {
this.InputFileName = InputFileName;
}
public void setOutputFileName(String OutputFileName) {
this.OutputFileName = OutputFileName;
}
public void setOutputWidth(int OutputWidth) {
this.OutputWidth = OutputWidth;
}
public void setOutputHeight(int OutputHeight) {
this.OutputHeight = OutputHeight;
}
public void setW_H(int width, int height) {
this.OutputWidth = width;
this.OutputHeight = height;
}
public String s_pic() {
// 建立输出文件对象
File file = new File(OutputDir + OutputFileName);
FileOutputStream tempout = null;
try {
tempout = new FileOutputStream(file);
} catch (Exception ex) {
System.out.println(ex.toString());
}
Image img = null;
Toolkit tk = Toolkit.getDefaultToolkit();
Applet app = new Applet();
MediaTracker mt = new MediaTracker(app);
try {
img = tk.getImage(InputDir + InputFileName);
mt.addImage(img, 0);
mt.waitForID(0);
} catch (Exception e) {
e.printStackTrace();
}
if (img.getWidth(null) == -1) {
System.out.println(" can’t read,retry!" + "<BR>");
return "no";
} else {
int new_w;
int new_h;
if (this.proportion == true) // 判断是否是等比缩放.
{
// 为等比缩放计算输出的图片宽度及高度
double rate1 = ((double) img.getWidth(null))
/ (double) OutputWidth + 0.1;
double rate2 = ((double) img.getHeight(null))
/ (double) OutputHeight + 0.1;
double rate = rate1 > rate2 ? rate1 : rate2;
new_w = (int) (((double) img.getWidth(null)) / rate);
new_h = (int) (((double) img.getHeight(null)) / rate);
} else {
new_w = OutputWidth; // 输出的图片宽度
new_h = OutputHeight; // 输出的图片高度
}
BufferedImage buffImg = new BufferedImage(new_w, new_h,
BufferedImage.TYPE_INT_RGB);
Graphics g = buffImg.createGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, new_w, new_h);
g.drawImage(img, 0, 0, new_w, new_h, null);
g.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);
try {
encoder.encode(buffImg);
tempout.close();
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
return "ok";
}
public String s_pic(String InputDir, String OutputDir,
String InputFileName, String OutputFileName) {
// 输入图路径
this.InputDir = InputDir;
// 输出图路径
this.OutputDir = OutputDir;
// 输入图文件名
this.InputFileName = InputFileName;
// 输出图文件名
this.OutputFileName = OutputFileName;
return s_pic();
}
public String s_pic(String InputDir, String OutputDir,
String InputFileName, String OutputFileName, int width, int height,
boolean gp) {
// 输入图路径
this.InputDir = InputDir;
// 输出图路径
this.OutputDir = OutputDir;
// 输入图文件名
this.InputFileName = InputFileName;
// 输出图文件名
this.OutputFileName = OutputFileName;
// 设置图片长宽
setW_H(width, height);
// 是否是等比缩放 标记
this.proportion = gp;
return s_pic();
}
// public static void main(String[] a) {
// // s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度)
// Small_pic mypic = new Small_pic();
// System.out.println(mypic.s_pic(
// "E:\\JAVA\\J2EEDatum\\王亮jsp资料\\缩图例子\\personal\\",
// "E:\\JAVA\\J2EEDatum\\酒剑仙jsp资料\\缩图例子\\personal\\", "1.jpg",
// "new1.jpg", 80, 80, true));
// }
}
分享到:
相关推荐
java依赖jai-imageio,非常方便地实现jpg图片转为raw格式图片,raw格式图片转为jpg图片
java压缩jpg和gif图片文件,gif压缩没问题
通过java中IO流实现对.jpg与最后16进制的读取与写入,中间在利用Integer.toHexString()函数将字节数据转出16进制的数以便于观察。具体实现可将附件.java文件
java实现多张png,jpg等各种图片文件转动态gif图,可以设置各种参数,成功源码
转的别人的代码,但是他要的分好高,而且没有工程。用JAVA写的测试可运行,能实现PDF转JPG和JPG转PDF。java工程名叫jpgToPdf,所有的JPG和PDF文件放在D盘根目录下即可运行。
不借助任何JAR档,使用Java实现TXT转图片
(Java实现)JPG to TIFF等图片格式和TIFF图片合并功能解决方案。 有需要的看一看
本代码实现html文件转换成一个图片的功能。附件包含所需要的包。 注:该代码转换的html文件必须一个屏幕能展现出来的,如果内容太多一个屏幕展现不出来则不能很好的转换。所以该代码只适用于内容不太多的html文件。...
在java中通过ImageMagick安装包和im4java.jar把其他格式图片如HEIC转换为PNG,JPEG等常用格式图片。内有安装操作步骤及编码内容。亲测有效。 场景运用:ios操作系统在前端图片格式上传中。已普遍采用HEIC格式图片。...
此程序包括对图片的修改编辑,保存此程序的主方法在 hysun.draw.AppFrame中,需要修改一下文件路径。可正常运行的一个java编辑jpg的程序
java转换pdf、word为jpg图片,并打包exe,里面包含源代码.使用exe4j打包成为exe文件
Java将图片合并为视频的项目文件 下载依赖包是会比较慢,请在网络好的环境下载 依赖包下载好后,直接编译即可运行
Java将DICOM格式的图片转换为png,JPG,jpeg格式的图片
java程序,读取BMP图片的数据存到数组中,利用java类的压缩算法,将BMP图片转换为JPG格式的图片。
* @Description:getImageFileType,获取图片文件实际类型,若不是图片则返回null * @author Tang.Homvee * @creaetime 2015年8月21日下午5:43:53 * @param f * @return */ public final static ...
背景:由于之前程序是将图片以16进制数的形式直接保存到数据库的。现需要将图片批量导出所以写了下面的简易代码,供大家学习交流使用。...目的:将mssql数据库中类型为image的图片信息,导出到文件(*.jpg)
采用JDK自带的图片除理类对图片进行压缩,可以将4M的图片文件压缩成100K以下
java图片、文件处理,提供图片截切,图片压缩,上传,等
java实现可以获取视频中某一帧的图片,并将图片保存至本地,自定义设置截取图片的宽度和高度,获取视频的总帧数,视频总时长。
java将图片变成指定大小,不管是多大的图片