import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.stream.FileImageInputStream;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageManipulation {
public static void main(String[] args) throws Exception {
File infile = new File("f:\\test.gif");//圖片文件路徑
File outfile = new File("f:\\test_new2.gif");//圖片文件輸出路徑
ImageReader reader = ImageIO.getImageReadersByFormatName("jpeg").next();
reader.setInput(new FileImageInputStream(infile), true, false);
IIOMetadata data = reader.getImageMetadata(0);
BufferedImage image = reader.read(0);
int w = 30, h = -1;//Width Height
Image rescaled = image.getScaledInstance(w, h, Image.SCALE_AREA_AVERAGING);
BufferedImage output = toBufferedImage(rescaled, BufferedImage.TYPE_INT_RGB);
Element tree = (Element) data.getAsTree("javax_imageio_jpeg_image_1.0");
Element jfif = (Element) tree.getElementsByTagName("app0JFIF").item(0);
for (int i = 0; i < jfif.getAttributes().getLength(); i++) {
Node attribute = jfif.getAttributes().item(i);
System.out.println(attribute.getNodeName() + "="
+ attribute.getNodeValue());
}
FileOutputStream fos = new FileOutputStream(outfile);
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(output);
jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
jpegEncodeParam.setXDensity(200);//设置水平dpi
jpegEncodeParam.setYDensity(200);//设置垂直dpi
jpegEncoder.encode(output, jpegEncodeParam);
fos.close();
}
public static BufferedImage toBufferedImage(Image image, int type) {
int w = image.getWidth(null);
int h = image.getHeight(null);
BufferedImage result = new BufferedImage(w, h, type);
Graphics2D g = result.createGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
return result;
}
}
分享到:
相关推荐
以下是一个简单的双线性插值缩放的Java代码示例: ```java public class ZPhotoer { public static BufferedImage scale(BufferedImage source, int targetWidth, int targetHeight) { BufferedImage scaled = ...
本教程将专注于使用Java语言实现图片的等比缩放和压缩技术,以满足存储和传输的需求。下面,我们将深入探讨这些关键知识点。 首先,我们来了解等比缩放。等比缩放是指在改变图片尺寸时,保持其长宽比不变,防止图片...
在这里,我们将主要探讨如何使用Java AWT中的Graphics2D类来实现图片的缩放。 `ScaleImageDemo.java` 是一个Java应用程序,它展示了如何加载图片(例如 `2.jpg`),然后对其进行缩放。下面我们将深入解析这个过程。...
一、图片缩放 1. 使用`BufferedImage`类: Java的`java.awt.image`包提供了`BufferedImage`类,可以用来读取、创建和操作图像。通过`Graphics2D`对象,我们可以对`BufferedImage`进行缩放操作。以下是一个简单的...
7. **配置参数**:在`PictureResize.java`程序中,很可能包含了配置图片缩放大小的参数,这样用户可以根据需求调整缩放比例。 总之,批量缩放图片的Java实现是一个结合了文件操作、图像处理和可能的并发编程的技术...
Java GIF图片缩放是开发过程中常见的一项任务,尤其是在处理动态图像时。GIF是一种支持动画的格式,广泛用于网络上。在Java中处理GIF图片,我们通常会使用到一些库,比如`gif4j`,这是一个轻量级且功能强大的Java库...
实现图片的压缩 1.按照固定的比例缩放图片 2.以宽度为基准等比例放缩图片 3.以高度为基准,等比例缩放图片 4.按照最大高度限制,生成最大的等比例缩略图
总之,Java提供了强大的图像处理能力,通过理解`BufferedImage`和`Graphics2D`,我们可以方便地实现图片缩放功能,同时考虑到缩放质量、性能和代码的可维护性。在进行图像处理时,记得根据项目需求选择合适的缩放...
这两个Java类可能是实现图片防篡改功能的核心代码。`ImageHelper`可能包含对图片进行哈希计算的主要逻辑,包括读取图片、预处理、计算哈希值等功能。而`ImageUtil`可能是通用的图片处理工具类,包含如图片转换、...
以上就是使用Java实现图片上传并按需缩放显示的基本步骤。实际应用中,还需要考虑错误处理、内存管理、文件安全、性能优化等方面的问题。提供的文档"图片上传显示(缩小图片).doc"应该包含了更详细的代码示例和具体...
本文将详细讨论如何实现图片的缩放功能,基于提供的"图片缩放实现"的标题和描述,我们可以推断这是一个关于图片缩放效果的示例项目,名为"imageViewdemo"。 图片缩放涉及到图像处理的基本概念,主要目标是调整图片...
这个“图片缩放剪切处理代码”主题涉及到的是使用JavaScript、ASP、PHP和可能的JSP技术来实现这些功能。下面我们将深入探讨这些技术及其在图片处理中的应用。 首先,JavaScript(JS)是一种广泛使用的客户端脚本...
本实例代码主要关注如何在Java窗体中实现图片的拖动功能。我们将探讨Java AWT和Swing库中的相关API,以及如何通过`DragPictureDemo.java`这个示例代码来实现这个功能。 首先,Java AWT(Abstract Window Toolkit)...
该类通过构造函数初始化成员变量,并提供了一个核心方法 `s_pic()` 来实现图片缩放功能。 #### 构造函数 ```java public DwindlePic() { // 初始化成员变量 InputDir = ""; OutputDir = ""; InputFileName = ...
在压缩包中的"java图片大小转换"文件中,很可能包含了实现这些功能的示例代码和使用说明,可以参考学习以加深理解。在实际开发中,我们还可以借助第三方库如`ImageMagick`、`Java Advanced Imaging (JAI)`或`JavaFX`...
Java实现图片缩放、旋转和马赛克化技术详解 Java语言作为一门强大的编程语言,广泛应用于图像处理领域。今天,我们将详细介绍Java实现图片缩放、旋转和马赛克化的技术。 一、图片缩放 图片缩放是图像处理中非常...
Java编程实现幻灯片放映是一项常见的任务,尤其在创建网页互动元素或教学演示时。Java Applet是Java语言中一种特殊的应用程序,它能够在Web浏览器中运行,为用户提供丰富的交互体验。本项目就是利用Java Applet技术...
综上所述,这个 Java 实现的电子阅读器源代码涵盖了多个Java编程的子领域,包括GUI设计、事件处理、图形变换、全屏显示、数据持久化以及图像处理。开发者在理解和使用这些源代码时,需要具备扎实的 Java 基础,熟悉 ...
实现SIFT算法的Java代码可能涉及到大量的矩阵运算和数据结构,如堆栈、队列和数组。开发者可能使用了Java的`java.awt.image.BufferedImage`类来处理图像,以及`java.util.ArrayList`等数据结构来存储关键点和描述符...
本示例中的"JAVA实现的图片大小随意拉动调整"着重讲解了如何利用Swing来实现图片的动态缩放功能,让用户可以自由调整图片的大小。这个功能在很多应用中都非常实用,比如图像查看器、编辑器或者任何需要展示可调整...