Mã nguồn này sẽ hướng dẫn cách hiển thị hình TIF trên JOptionPane thông qua đường dẫn hình.
ImageViewer.java
/**
* @(#)ImageViewer.java
*
* ImageViewer application
*
* @author rgagnon.com
* @version 1.00 2014/1/6
*/
import javax.media.jai.PlanarImage ;
import com.sun.media.jai.codec.ByteArraySeekableStream ;
import com.sun.media.jai.codec.ImageCodec ;
import com.sun.media.jai.codec.ImageDecoder ;
import com.sun.media.jai.codec.SeekableStream ;
import java.io.FileInputStream ;
import java.nio.ByteBuffer ;
import java.nio.channels.FileChannel ;
import java.awt.Image ;
import java.awt.image.RenderedImage ;
import javax.swing.JOptionPane ;
import javax.swing.JLabel ;
import javax.swing.ImageIcon ;
public class ImageViewer {
static Image load(byte[] data) throws Exception {
Image image = null;
SeekableStream stream = new ByteArraySeekableStream(data);
String[] names = ImageCodec.getDecoderNames(stream);
ImageDecoder dec = ImageCodec.createImageDecoder(names[0], stream, null);
RenderedImage im = dec.decodeAsRenderedImage();
image = PlanarImage.wrapRenderedImage(im).getAsBufferedImage();
return image;
}
public static void main(String[] args) throws Exception {
String path;
path = JOptionPane.showInputDialog(null, "Image Path", "D:/Z-TEST/Image/Image_TIF_NONE_001.tif");
FileInputStream in = new FileInputStream(path);
FileChannel channel = in.getChannel();
ByteBuffer buffer = ByteBuffer.allocate((int) channel.size());
channel.read(buffer);
Image image = load(buffer.array());
// make sure that the image is not too big
// scale with a width of 500
Image imageScaled = image.getScaledInstance(500, -1, Image.SCALE_SMOOTH);
//
System.out.println("image: " + path + "\n" + image);
//
JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(imageScaled)));
}
}
* @(#)ImageViewer.java
*
* ImageViewer application
*
* @author rgagnon.com
* @version 1.00 2014/1/6
*/
import javax.media.jai.PlanarImage ;
import com.sun.media.jai.codec.ByteArraySeekableStream ;
import com.sun.media.jai.codec.ImageCodec ;
import com.sun.media.jai.codec.ImageDecoder ;
import com.sun.media.jai.codec.SeekableStream ;
import java.io.FileInputStream ;
import java.nio.ByteBuffer ;
import java.nio.channels.FileChannel ;
import java.awt.Image ;
import java.awt.image.RenderedImage ;
import javax.swing.JOptionPane ;
import javax.swing.JLabel ;
import javax.swing.ImageIcon ;
public class ImageViewer {
static Image load(byte[] data) throws Exception {
Image image = null;
SeekableStream stream = new ByteArraySeekableStream(data);
String[] names = ImageCodec.getDecoderNames(stream);
ImageDecoder dec = ImageCodec.createImageDecoder(names[0], stream, null);
RenderedImage im = dec.decodeAsRenderedImage();
image = PlanarImage.wrapRenderedImage(im).getAsBufferedImage();
return image;
}
public static void main(String[] args) throws Exception {
String path;
path = JOptionPane.showInputDialog(null, "Image Path", "D:/Z-TEST/Image/Image_TIF_NONE_001.tif");
FileInputStream in = new FileInputStream(path);
FileChannel channel = in.getChannel();
ByteBuffer buffer = ByteBuffer.allocate((int) channel.size());
channel.read(buffer);
Image image = load(buffer.array());
// make sure that the image is not too big
// scale with a width of 500
Image imageScaled = image.getScaledInstance(500, -1, Image.SCALE_SMOOTH);
//
System.out.println("image: " + path + "\n" + image);
//
JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(imageScaled)));
}
}
Đầu tiên bạn cần tải các thư viện jar sau để chạy được chương trình:
jai-core-1.1.3-alpha
jai_codec-1.1.3-alpha
jai_windows-i586
*Note: Trường hợp bạn không biết cách tải có thể xem hướng dẫn download.
Sau khi chạy chương trình bạn sẽ thấy một hộp thoại yêu cầu bạn nhập đường dẫn hình cần hiển thị vào text box.
No comments:
Post a Comment