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编程中,处理图像数据并将其转换为16进制表示是一项常见的任务,尤其是在...运行这段代码,你将得到.jpg图片文件最后16个字节的16进制表示。这个过程对于理解文件结构、进行数据比较或分析具有一定的实用价值。
本篇文章将详细探讨如何利用Java与JAI-ImageIO库进行JPEG(jpg)与RAW格式图片之间的转换。 首先,让我们了解这两种图像格式。JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩图像格式,适用于...
本话题主要关注的是如何使用Java来实现JPG图像文件转换为TIFF(Tagged Image File Format)文件的流程。TIFF是一种灵活的位图图像格式,广泛用于扫描、打印、光栅图像处理软件,以及在各种操作系统中使用。以下是对...
### Java实现TXT文件转图片 #### 背景与需求 在特定的应用场景下,将文本文件转换为图像格式的需求可能会出现。例如,在创建电子书、海报或是其他类型的媒体时,有时需要将纯文本信息转化为视觉友好的图像形式。...
对于JPG到PDF的转换,我们可以使用Java的ImageIO类读取JPG图片,然后利用PDFBox创建一个新的PDF文档,并将每张图片添加为一个页面。以下是一个基本的实现: ```java import org.apache.pdfbox.pdmodel....
这段代码首先加载了TIFF文件,然后使用JAI的`getAsBufferedImage()`方法将其转换为Java的`BufferedImage`对象,最后通过`ImageIO.write()`方法将该图像保存为JPEG格式。 需要注意的是,JAI库可能对内存消耗较大,...
5. **添加图片**:使用`Image`类加载图片文件,并将其添加到PDF文档中。iText支持多种图像格式,如JPEG、PNG等。 ```java Image image = Image.getInstance("image.jpg"); document.add(image); ``` 6. **关闭文档**...
本文将深入探讨如何使用Java来压缩JPEG(jpg)和GIF格式的图片文件。GIF压缩通常涉及到位图数据的有损或无损压缩算法,而JPEG则是一种广泛使用的有损压缩标准,尤其适合于照片类的连续色调图像。 首先,我们需要...
2. **读取图片文件**:使用Java的`FileInputStream`读取PNG或JPG文件,然后用gif4j库提供的API将其转化为`GIF89aImage`对象。 3. **创建GIF动画**:初始化一个`GIF89a`对象,这将是最终的GIF动画容器。你可以设置...
标题中的“jpg图片转换成十六进制字符文件”是指一种技术操作,即将JPEG格式的图片文件转换成由十六进制数字组成的文本文件。这种转换在编程和数据处理中很有用,因为图片本质上是由二进制数据构成的,而十六进制是...
在Java中,这可以通过`java.io.File`类来实现,或者在`ImageIO`类中直接指定文件路径。 6. **主方法与程序启动**: 提到的`hysun.draw.AppFrame`可能包含程序的主入口点,即`public static void main(String[] args)...
本代码实现html文件转换成一个图片的功能。附件包含所需要的包。 注:该代码转换的html文件必须一个屏幕能展现出来的,如果内容太多一个屏幕展现不出来则不能很好的转换。所以该代码只适用于内容不太多的html文件。...
1. **图片读取**:使用Java的`BufferedImage`类读取图片文件,或者使用第三方库如`ImageIO`进行更高效的操作。 2. **帧序列创建**:将每张图片转换为FFmpeg可识别的帧格式,通常为JPEG或PNG。 3. **视频参数设置**:...
使用`FileInputStream`类读取图片文件,然后将其内容转换为字节数组。以下是一个简单的示例: ```java File imageFile = new File("1.jpg"); FileInputStream fis = new FileInputStream(imageFile); byte[] ...
通过以上方法,无论是个人用户还是专业开发者,都能根据自己的需求和条件轻松将JPG图片文件转换为PDF格式,方便管理和分享。对于【绿盟.url】,它可能是一个链接,指向与JPG转PDF相关的资源或教程,用户可以点击访问...
在java中通过ImageMagick安装包和im4java.jar把其他格式图片如HEIC转换为PNG,JPEG等常用格式图片。内有安装操作步骤及编码内容。亲测有效。 场景运用:ios操作系统在前端图片格式上传中。已普遍采用HEIC格式图片。...
至于`Java.jpg`文件,它通常表示一个图片文件,而不是文本文件。如果需要读取图片数据,可以使用`ImageIO`类或其他图像处理库,但这超出了“按顺序读取文件”的范畴,因为图片数据通常是二进制格式,而非文本。 ...
本教程主要讲解如何使用Java处理DICOM格式的图像,并将其转换为常见的png、JPG或jpeg格式。 首先,我们需要一个能够读取和操作DICOM文件的Java库。常见的选择是DCMTK(DICOM Toolkit),但它是C++库,需要通过JNI...
- **权限问题**:确保Java程序有读取PDF文件和写入图片文件的权限。 - **编码问题**:如果PDF包含非ASCII字符,可能需要处理编码。PDFBox支持Unicode,但确保文件路径和PDF内容正确编码至关重要。 - **内存管理**...
本篇文章将详细讲解如何使用Java将JPEG图片序列转换为AVI视频格式,这对于那些需要将一系列静态图片组合成动态视频的场景非常有用。 首先,我们需要了解JPEG(Joint Photographic Experts Group)是一种常见的图像...