简体   繁体   中英

8 bit gray scale image byte array to jpg

I am trying to convert a 8 bit gray scale image byte array to jpg image format in java.

static byte[] bytes = new byte[]{126, 126, 127, -128};

public static void main(String[] args) throws IOException {
    ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
    Iterator<?> readers = ImageIO.getImageReadersByFormatName("jpg");
    ImageReader reader = (ImageReader) readers.next();
    Object source = bis; 
    ImageInputStream iis = ImageIO.createImageInputStream(source); 
    reader.setInput(iis, true);
    ImageReadParam param = reader.getDefaultReadParam();
    Image image = reader.read(0, param);
    BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_BYTE_GRAY);
    Graphics2D g2 = bufferedImage.createGraphics();
    g2.drawImage(image, null, null);
    File imageFile = new File("C:\\newrose3.jpg");
    ImageIO.write(bufferedImage, "jpg", imageFile);
    System.out.println(imageFile.getPath());
}

I have bytes having image data and I want to convert it into readable image format in java.

Assuming bytes is supposed to be pixel data, you should create an image from those bytes, then write it out as JPEG.

Something like:

// Create an image type grayscale
BufferedImage image = new BufferedImage(2, 2, BufferedImage.TYPE_BYTE_GRAY);

// Get the backing pixels, and copy into it
byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
System.arraycopy(bytes, 0, data, 0, bytes.length);

// Write it out:
ImageIO.write(image, "jpg", new File("yourPathHere");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM