2009-07-31 57 views
13

Âm thanh đơn giản đúng không? Sử dụngChuyển đổi Byte Array thành hình ảnh trong Java - mà không biết loại

ImageIO.read(new ByteArrayInputStream(bytes)); 

Đây là nếp nhăn. Vì lý do nào đó, nó phát hiện jpeg dưới dạng bmp, và đó là ImageReader đầu tiên được trả về khi tôi gọi

ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes)); 
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis); 

Điều này làm cho hình ảnh bị hỏng. Có cách nào để nói qua java ngắn của tìm kiếm trực tiếp tại các byte cho tiêu đề, và không có ai biết một tài liệu tham khảo tốt cho các tiêu đề byte cho các hình ảnh khác nhau?

Chỉ cần thông báo cho các bạn biết rằng tôi vẫn đang làm việc này. Tôi sẽ cho bạn biết nếu/khi tôi có câu trả lời. Tôi cảm ơn tất cả các bạn đã trả lời cho đến nay.

Trả lời

5

This page có thể là điểm khởi đầu tốt cho số ảo thuật. Here là một cái gì đó tương tự từ Wikipedia.

3

Chưa chơi với ImageIO trong một thời gian, và chưa thử nghiệm điều này, nhưng tôi có vẻ nhớ lại điều gì đó như thế này. (kể từ khi bạn nói rằng bạn biết tệp của mình là một tệp jpg chứ không phải bitmap, tôi đang sử dụng thông tin đó để giúp tìm trình tải phù hợp).

String inFormat = "jpg"; 

Iterator inReaders = ImageIO.getImageReadersByFormatName(inFormat); 

... 

nextInReader.setInput(iis); 
+0

Đó là chính xác nhưng vấn đề là thu thập dữ liệu là sự kết hợp của bmp, png, jpg, v.v. Vì vậy, bất kỳ điều nào trong số đó có thể hợp lệ, mẹo sẽ cho biết cái nào chỉ dựa trên byte. – PHeath

0

là người đọc BMP các chỉ một trả về bởi getImageReaders()? Có thể bạn có nhiều hơn một và có thể đưa ra lựa chọn dựa trên điều đó.

Các vấn đề liên quan