亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java數字圖像處理基礎使用imageio寫圖像文件示例

2019-11-26 15:45:07
字體:
來源:轉載
供稿:網友

一個BufferedImage的像素數據儲存在Raster中,ColorModel里面儲存顏色空間,類型等信息,當前Java只支持一下三種圖像格式- JPG,PNG,GIF,如何向讓Java支持其它格式,首先要 完成Java中的圖像讀寫接口,然后打成jar,加上啟動參數- Xbootclasspath/pnewimageformatIO.jar即可。

Java中如何讀寫一個圖像文件,使用ImageIO對象即可。讀圖像文件的代碼如下:

 

復制代碼 代碼如下:

File file = new File("D://test//blue_flower.jpg");
BufferedImage image = ImageIO.read(file);

寫圖像文件的代碼如下:

復制代碼 代碼如下:

File outputfile = new File("saved.png");
ImageIO.write(bufferedImage, "png",outputfile);

從BufferedImage對象中讀取像素數據的代碼如下:

復制代碼 代碼如下:

int type= image.getType();
if ( type ==BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
return (int [])image.getRaster().getDataElements(x, y, width, height, pixels );
else
return image.getRGB( x, y, width, height, pixels, 0, width );

首先獲取圖像類型,如果不是32位的INT型數據,直接讀寫RGB值即可,否則需要從Raster
對象中讀取。

往BufferedImage對象中寫入像素數據同樣遵守上面的規則。代碼如下:

復制代碼 代碼如下:

int type= image.getType();
if ( type ==BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
image.getRaster().setDataElements(x, y, width, height, pixels );
else
image.setRGB(x, y, width, height, pixels, 0, width );

讀取圖像可能因為圖像文件比較大,需要一定時間的等待才可以,Java Advance Image
Processor API提供了MediaTracker對象來跟蹤圖像的加載,同步其它操作,使用方法如下:
MediaTracker tracker = new MediaTracker(this); //初始化對象
tracker.addImage(image_01, 1); // 加入要跟蹤的BufferedImage對象image_001
tracker.waitForID(1, 10000) // 等待10秒,讓iamge_01圖像加載
從一個32位int型數據cARGB中讀取圖像RGB顏色值的代碼如下:
1 int alpha = (cARGB >> 24)& 0xff; //透明度通道
2 int red = (cARGB >> 16) &0xff;
3 int green = (cARGB >> 8) &0xff;
4 int blue = cARGB & 0xff;
將RGB顏色值寫入成一個INT型數據cRGB的代碼如下:
cRGB = (alpha << 24) | (red<< 16) | (green << 8) | blue;
創建一個BufferedImage對象的代碼如下:
BufferedImage image = newBufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB);
一個完整的源代碼Demo如下:

復制代碼 代碼如下:

 package com.gloomyfish.swing;

 import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.RenderingHints;
 import java.awt.image.BufferedImage;
 import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class PlasmaDemo extends JComponent { 

    /**
     * 
     */ 
    private static final long serialVersionUID = -2236160343614397287L; 
    private BufferedImage image = null; 
    private int size = 256;

    public PlasmaDemo() { 
        super(); 
        this.setOpaque(false); 
    } 

    protected void paintComponent(Graphics g) { 
        Graphics2D g2 = (Graphics2D)g; 
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
        g2.drawImage(getImage(), 5, 5, image.getWidth(), image.getHeight(), null); 
    } 

    private BufferedImage getImage() { 
        if(image == null) { 
            image = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB); 
            int[] rgbData = new int[size*size]; 
            generateNoiseImage(rgbData); 
            setRGB(image, 0, 0, size, size, rgbData);
            File outFile = new File("plasma.jpg");
            try {
                ImageIO.write(image, "jpg", outFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } 
        return image; 
    } 

    public void generateNoiseImage(int[] rgbData) { 
        int index = 0; 
        int a = 255; 
        int r = 0; 
        int g = 0; 
        int b = 0; 

        for(int row=0; row<size; row++) { 
            for(int col=0; col<size; col++) { 
                // set random color value for each pixel 
                r = (int)(128.0 + (128.0 * Math.sin((row + col) / 8.0))); 
                g = (int)(128.0 + (128.0 * Math.sin((row + col) / 8.0))); 
                b = (int)(128.0 + (128.0 * Math.sin((row + col) / 8.0))); 

                rgbData[index] = ((clamp(a) & 0xff) << 24) | 
                                ((clamp(r) & 0xff) << 16)  | 
                                ((clamp(g) & 0xff) << 8)   | 
                                ((clamp(b) & 0xff)); 
                index++; 
            } 
        } 

    } 

    private int clamp(int rgb) { 
        if(rgb > 255) 
            return 255; 
        if(rgb < 0) 
            return 0; 
        return rgb; 
    }   

    public void setRGB( BufferedImage image, int x, int y, int width, int height, int[] pixels ) { 
        int type = image.getType(); 
        if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB ) 
            image.getRaster().setDataElements( x, y, width, height, pixels ); 
        else 
            image.setRGB( x, y, width, height, pixels, 0, width ); 
    } 

    public static void main(String[] args) { 
        JFrame frame = new JFrame("Noise Art Panel"); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.getContentPane().setLayout(new BorderLayout()); 

        frame.getContentPane().add(new PlasmaDemo(), BorderLayout.CENTER); 
        frame.setPreferredSize(new Dimension(400 + 25,450)); 
       frame.pack(); 
       frame.setVisible(true); 
   } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利一区视频在线观看| 亚洲中国色老太| 九色91av视频| 亚洲欧美国内爽妇网| 欧美成人h版在线观看| 97在线精品视频| 亚洲人成啪啪网站| 亚洲视频欧洲视频| 欧美一级大胆视频| 成人羞羞国产免费| 成人免费淫片视频软件| 国产精品永久免费视频| 亚洲国产日韩欧美在线图片| 亚洲桃花岛网站| 久久综合久中文字幕青草| 亚洲成人xxx| 成人av电影天堂| 久久久久久美女| 日韩在线观看免费高清完整版| 欧美富婆性猛交| 伊人伊成久久人综合网站| 亚洲精品美女久久久| 国产精品国内视频| 国产精品女主播视频| 亚洲精品久久久久久久久| 青草青草久热精品视频在线观看| 久99九色视频在线观看| 在线看片第一页欧美| 亚洲18私人小影院| 日本在线精品视频| 久久久久久香蕉网| 亚洲第一色中文字幕| 欧美精品18videos性欧美| 精品久久久久久久久久久| 日韩精品在线观看视频| 亚洲欧洲国产伦综合| 亚洲视频一区二区三区| 亚洲欧美国产精品专区久久| 国产一区二区三区在线观看网站| 亚洲高清一区二| 亚洲性线免费观看视频成熟| 热99精品里视频精品| 国产亚洲精品久久久久久| 国产亚洲精品美女久久久| www欧美日韩| 亚洲国产成人精品久久久国产成人一区| 欧美日韩亚洲91| 久久久在线观看| 亚洲精品动漫100p| 日韩精品在线观看视频| 九九久久精品一区| 97超视频免费观看| 国产精品色婷婷视频| 亚洲综合最新在线| 91日本在线观看| 亚洲精品中文字幕有码专区| 欧美最顶级丰满的aⅴ艳星| 欧美一区二区三区四区在线| 欧美激情精品久久久久久| 亚洲精品乱码久久久久久按摩观| 青青草原一区二区| 热久久这里只有| 国产精品欧美久久久| 中文字幕一区电影| 日本欧美在线视频| 91精品国产99久久久久久| 美女av一区二区三区| 精品久久久久久久久久| y97精品国产97久久久久久| 日本亚洲欧洲色| 国产精品一区二区三区久久| 91精品视频免费| 久国内精品在线| 亚洲欧美资源在线| 成人免费淫片视频软件| 亚洲精品视频播放| 国产综合久久久久| 欧美激情精品久久久久久大尺度| 日本19禁啪啪免费观看www| 欧美成人合集magnet| 热99久久精品| 欧美精品在线网站| 亚洲国产精品成人精品| 亚洲一区二区三区四区在线播放| 日韩美女在线看| 大伊人狠狠躁夜夜躁av一区| 日韩精品在线观看一区二区| 国产精品白嫩初高中害羞小美女| 国产精品国语对白| 成人网在线免费观看| 国产婷婷97碰碰久久人人蜜臀| 最新国产成人av网站网址麻豆| 亚洲国产一区二区三区在线观看| 欧美一级黄色网| 亚洲天堂av在线播放| 欧美日韩一区二区免费视频| 综合av色偷偷网| 在线精品播放av| 国产一区二区三区视频免费| 亚洲精品97久久| 久久久女人电视剧免费播放下载| 精品亚洲一区二区三区在线播放| 成人伊人精品色xxxx视频| 亚洲精品99久久久久中文字幕| 日本精品性网站在线观看| 日韩成人在线电影网| 国产精品欧美风情| 成人在线免费观看视视频| 97香蕉久久夜色精品国产| 欧美精品一区二区三区国产精品| 搡老女人一区二区三区视频tv| 91精品国产一区| 茄子视频成人在线| 国产成人亚洲综合91精品| 国产欧美中文字幕| 国产精品一香蕉国产线看观看| 欧美一级淫片丝袜脚交| 久久久精品一区二区| 国产亚洲欧洲高清一区| 国产性猛交xxxx免费看久久| 青青久久av北条麻妃海外网| 国产精品99久久久久久www| 亚洲电影免费观看高清完整版在线| 91在线国产电影| 国产精品久久久久久久久粉嫩av| 亚洲欧洲日产国码av系列天堂| 美女扒开尿口让男人操亚洲视频网站| 亚洲精品国产精品自产a区红杏吧| 97视频免费在线看| 国产精品久久久久久久午夜| 国产精品黄视频| 久久视频在线视频| 性色av香蕉一区二区| 亚洲午夜av久久乱码| 久久大大胆人体| 粗暴蹂躏中文一区二区三区| 26uuu另类亚洲欧美日本老年| 日韩成人高清在线| 日韩av资源在线播放| 91成人福利在线| 欧美影院久久久| 久久久爽爽爽美女图片| 91在线无精精品一区二区| 欧美日韩福利电影| 国产精品久久久久久久9999| 久久深夜福利免费观看| 久久久噜噜噜久噜久久| x99av成人免费| 日韩电影免费观看在线观看| 日韩精品视频免费专区在线播放| 国产日韩精品视频| 欧美在线免费看| 欧美亚洲激情在线| 国产成人久久久精品一区| 亚洲片国产一区一级在线观看| 欧美特黄级在线| 久久精视频免费在线久久完整在线看| 一区二区三区久久精品| 欧美亚洲午夜视频在线观看| 亚洲高清色综合| 国产在线精品自拍| 欧美一级视频在线观看| 全球成人中文在线| 亚洲新声在线观看|