Linda_Lindaaaa 2015-06-16 09:14 采纳率: 64.7%
浏览 3975
已采纳

java中数组和图片的相互转换问题。

由于需求,我把一个灰度图片转成了一个short类型的数组。

 File file = new File("grayImage.jpg");
         BufferedImage src=ImageIO.read(file);
        int width=src.getWidth(null);
        int height=src.getHeight(null);
        int minX=src.getMinX();
        int minY=src.getMinY();
        short[] rgb = new short[3]; 
        short[] grayImage=new short[width*height];
        for(int i=minX;i<height;i++){
        for(int j=minY;j<width;j++){   

            //System.out.print(bi.getRGB(jw, ih));   
            int pixel=src.getRGB(j, i);   
            rgb[0] = (short) ((pixel & 0xff0000 ) >> 16) ;   
            rgb[1] = (short) ((pixel & 0xff00 ) >> 8) ;   
            rgb[2] = (short) (pixel & 0xff );   
            grayImage[i*width+j]=(short)(rgb[0] * 0.299 + rgb[1] * 0.587 + rgb[2] * 0.114);
            }
        }

现在我对的到的grayImage操作完了,并对像素值做了一些修改,那我应该如何
把short[] grayImage再转成图片格式呢?

  • 写回答

2条回答 默认 最新

  • JonsonJiao 2015-06-17 06:15
    关注

    试试这个呢,不是用short数组,用的int数组,输出的是灰度图片。

    int[] data1 = new int[grayImage.length];
            for (int i = 0; i < data1.length; i++) {
                data1[i] =  new Color(grayImage[i],grayImage[i],grayImage[i]).getRGB();
            }
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
            image.setRGB(minX, minY, width, height, data1, 0, width);
            String path = "D:\\test.png";
            try {
                ImageIO.write(image, "png", new File(path));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }```
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能