从文件读取JPEG图片,旋转90度,输出为另一JPEG图片,要求图片大小基本没有变化,最好能保持JPEG头文件,exif信息
解决方案 »
- Android下一段代码,请高手指点
- 关于JAVA的 XML面试题
- java.net.SocketException:Connection reset by peer: socket write error,500分
- javac 提示找不到文件。。。
- java在中国热起来了吗
- 怎样判断String类型里是否有汉字?
- 我从网站down下一个JDBCProgramExCode文件,例子中有import com.sun.java.swing.*;如何得到这样的包,不然程序根本无法编译,谢谢!!
- 500分等你回答--关于目录树结构显示的控件
- 请教高手!使用serlvet连接远端得DB2数据库(源码在内,测试不通过)?
- 送分问题
- java初学者的调试程序小问题?
- 如何用Java实现在DOS中用户输入的密码不显示?
http://buddy4warning.blogchina.com/450439.html
以下是下载地址:
java advanced imaging:http://java.sun.com/products/java-media/jai/downloads/download-1_1_2_01.html
以下是例程: import java.awt.Frame;
import java.awt.image.renderable.ParameterBlock;
import java.io.IOException;
import javax.media.jai.*;
import com.sun.media.jai.codec.FileSeekableStream;
import javax.media.jai.widget.ScrollingImagePanel;
/**
* This program decodes an image file of any JAI supported
* formats, such as GIF, JPEG, TIFF, BMP, PNM, PNG, into a
* RenderedImage, scales the image by 2X with bilinear
* interpolation, and then displays the result of the scale
* operation.
*/
public class JAISampleProgramRotate{ /** The main method. */
public static void main(String[] args) {
/* Validate input. */
if (args.length != 1) {
System.out.println("Usage: java JAISampleProgram " +
"input_image_filename");
System.exit(-1);
} /*
* Create an input stream from the specified file name
* to be used with the file decoding operator.
*/
FileSeekableStream stream = null;
try {
stream = new FileSeekableStream(args[0]);
} catch (IOException e) {
e.printStackTrace();
System.exit(0);
} /* Create an operator to decode the image file. */
RenderedOp image = JAI.create("stream", stream);
/*
* Create a standard bilinear interpolation object to be
* used with the "scale" operator.
*/
Interpolation interp = Interpolation.getInstance(
Interpolation.INTERP_BILINEAR);
int value = 45;
float angle = (float)(value * (Math.PI/180.0F)); // Create a ParameterBlock and specify the source and
// parameters
ParameterBlock pb = new ParameterBlock();
pb.addSource(image); // The source image//******************replace im with image****************
pb.add(0.0F); // The x origin
pb.add(0.0F); // The y origin
pb.add(angle); // The rotation angle
pb.add(new InterpolationNearest()); // The interpolation
// Create the scale operation
RenderedOp im = JAI.create("Rotate", pb, null);//**************************************************create an instance im of type RenderedOp********//-----------------------------------add the other operator sample code here-------------------------
/* Get the width and height of image2. */
int width = im.getWidth();
int height = im.getHeight(); /* Attach image2 to a scrolling panel to be displayed. */
ScrollingImagePanel panel = new ScrollingImagePanel(im, width, height); /* Create a frame to contain the panel. */
Frame window = new Frame("JAI Sample Program");
window.add(panel);
window.pack();
window.show();
}
}