知道了每个象素(pixel)的值
放在byte[] data中要生成一个JPEG的文件到硬盘
怎么做啊?这个问题有点烦啊

解决方案 »

  1.   

    如果已经有了byte【】 data,那么用fileOutputStream就可以保存到硬盘。如果要从bmp,tiff等格式转到jpeg,可以参考sun的jai库。java advanced imaging:http://java.sun.com/products/java-media/jai/downloads/download-1_1_2_01.html
      

  2.   


    ObjectOutputStream o = new ObjectOutputStream( new FileOutputStream("free.jpeg"));
    o.writeObject(Object obj);
    o.close();
    ------------------------------------------------------------------------------
       一天四个包子,我的生活!
                                                             --罗毅
      

  3.   

    private BufferedImage JYMO_IMAGE;
        ....        try {
                FileOutputStream fileOut = new FileOutputStream(file);
                BufferedOutputStream bufOut = new BufferedOutputStream(fileOut);
                JPEGImageEncoder encoderJpeg = JPEGCodec.createJPEGEncoder(bufOut);
                encoderJpeg.encode(JYMO_IMAGE);
                bufOut.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
      

  4.   

    知道了每个象素(pixel)的值
    放在byte[] data中可是我这个data是纯数据的啊
      

  5.   

    知道了每个象素(pixel)的值
    放在byte[] data中可是我这个data是纯数据的啊
      

  6.   

    MemoryImageSource.newPixel() //如果数据为数组
    要不
    new BufferedImage后,使用setRGB将数据写入图像
    最后使用ImageIO进行输出
              File f = new File("capture.jpeg");
              try {
                javax.imageio.ImageIO.write(offScreenImage, "jpeg", f);
              }
              catch (IOException ex) {
              }
      

  7.   

    假设知道了byte[] data ;
    byte[]data = {71,73,70,56,57,97,30,1,...,-77,-128,0,0,59};
    createJpg(data);void createJpg(byte[]data)throws Exception{
    DataInputStream fileReader = new DataInputStream(new ByteArrayInputStream(data));
    DataOutputStream out = null;
    try{
    byte[] chrBuffer = new byte[4096]; //缓冲
    File outfile = new File("c:\\outTest.jpg");
        out = new DataOutputStream(new FileOutputStream(outfile));
    int tmpLen ;
    while((tmpLen =fileReader.read(chrBuffer))!= -1){
    out.write(chrBuffer,0,tmpLen) ;
    }
    } catch (Exception e){
    System.out.println(e);
    } finally {
    fileReader.close() ;
    out.flush();
    out.close();
    }    
       }
      

  8.   

    laughsmile(海边的星空)你这样输出的jpg其实还是一个纯数据的文件阿
    因为data本来是一个纯数据的数组啊 lEFTmOON(我喜欢的MM可以不漂亮,但应该有沟有气质……) 
    兄弟,能不能详细点呢?
      

  9.   

    直接写文件?这样也可以?!如果数组不是很大你可以初始化一个BufferedImage实例简单用循环写象素信息 g.setColor(c)//(当然也有更快的方法,就是arraycopy到光栅数组)对于BufferedImage的输出就比较简单了,比如:import com.sun.image.codec.jpeg.*;  /**
       * 按JPEG图像编码到输出流
       * @param out - 输出流
       * @param quality - 质量比
       * @param image - 图形光栅
       * @throws IOException
       */
      public static void writeBufferedImageAsJPEG(OutputStream out, float quality,
                                                  BufferedImage image) throws
          IOException {
        if (out == null)
          throw new IllegalArgumentException(Null_Out_Argument );
        if (image == null) {
          throw new IllegalArgumentException(Null_Image_Argument );
        }
        else {
          JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
          JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
          param.setQuality(quality, true);
          encoder.encode(image, param);
          return;
        }
      }
      

  10.   

    简单用循环写象素信息 g.setColor(c)
    这个怎么定位?
    就是怎么把每个c写入相应的位置,没有找到这个定位的函数阿!//(当然也有更快的方法,就是arraycopy到光栅数组)这个怎么实现?愿闻其详
      

  11.   

    简单用循环写象素信息 g.setColor(c)
    我使用g.drawLine(x,y,x,y);
    定位画(x,y);这个点的//(当然也有更快的方法,就是arraycopy到光栅数组)这个怎么实现?还是不懂