Как преобразовать массив байтов в PNG-изображение (а не как JPEG)? Я столкнулся с этим при кодировании стеганографии. Я немного разбираюсь в том, что он требует преобразования в BufferedImage между ними. Пожалуйста помоги.Преобразование массива байтов в png изображение
ответ
Предположим, у вас есть массив байтов с длиной = (ширина изображения * высота изображения * 3). Во-первых, мы упаковать данные в BufferedImage:
import java.awt.BufferedImage;
byte[] b = (...);
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int off = (y * width + x) * 3;
int pix = (b[off] & 0xFF) << 16; // Red component
pix |= (b[off + 1] & 0xFF) << 8; // Green component
pix |= (b[off + 2] & 0xFF) << 0; // Blue component
img.setRGB(x, y, pix);
}
}
А потом записать файл в формате PNG:
import javax.imageio.ImageIO;
ImageIO.write(img, "png", new File("output.png"));
Я пробовал ваш код, но он не останавливается. Все данные, которые у меня есть: размер моего массива байтов: 1316890 и width = 1024 и height = 768. Изображение, которое я использовал, - http://vignette3.wikia.nocookie.net/pokemon/images/b/b4/ Pokemon_Anime.png/revision/latest? Cb = 20110118234235 –
Мои петли заканчиваются правильно. Что ты имеешь ввиду, это не останавливается? Пожалуйста, дайте мне информацию о том, какой код вы используете и какое поведение вы наблюдаете. – Nayuki
Теперь я немного исправил свой код, и я получаю исключение «ArrayIndexOutOfBound». Ширина и высота, полученные из BufferedImage исходного изображения, равны соответственно 1024 и 768, и когда я преобразовал массив BufferedImage в байты, размер массива равен 1316890. Теперь я хочу преобразовать массив байтов обратно в png-изображение. При использовании вашего кода я получаю исключение, как упоминалось выше. –
- 1. Преобразование массива байтов в изображение
- 2. Преобразование массива байтов PNG в массив байтов JPEG в java
- 3. Преобразование массива байтов в изображение
- 4. Преобразование массива байтов в PNG/JPG
- 5. Преобразование байтового массива в png
- 6. Преобразование байтов в изображение
- 7. преобразование байтов массива изображения
- 8. Преобразование сжатого байтового массива PNG в массив байтов BMP
- 9. Преобразование массива байтов в изображение в C# после изменения массива
- 10. Преобразование массива байтов и сохранение как изображение Python
- 11. Преобразование массива байтов в видеофайл
- 12. Преобразование массива байтов в IPAddress
- 13. Преобразование массива байтов в float32
- 14. Преобразование массива байтов в поток
- 15. Преобразование массива байтов в строку
- 16. Преобразование массива байтов в строку
- 17. Преобразование целочисленного массива в PNG-изображение в Python
- 18. Преобразование байтового массива в изображение
- 19. Ограничить преобразование массива изображений в формат PNG
- 20. Преобразование массива байтов в изображение без FromStream (для Mono)
- 21. Преобразование байтового массива в изображение
- 22. Как декодировать png-изображение для сырых байтов?
- 23. Преобразование байтов в UIImage
- 24. строка в преобразование массива байтов C#
- 25. HttpHandler для рендеринга png из массива байтов
- 26. Преобразование и отображение изображения из массива байтов
- 27. Преобразование массива изображений png в Base64
- 28. Преобразование массива в изображение
- 29. Обрезать изображение из массива байтов
- 30. Преобразование массива байтов TIFF в массив байтов JPEG в PHP
ли ваш байт в оттенках серого или RGB24? – Nayuki
На каком языке вы работаете? Java имеет хорошее преобразование изображения файлов и записи библиотек. –
Уточняете ли вы, что вы работаете с Java? Вы упомянули BufferedImage. И вы действительно искали массив байтов в BufferedImage? Я был бы удивлен, если бы не получил никаких результатов. https://stackoverflow.com/questions/12705385/how-to-convert-a-byte-to-a-bufferedimage-in-java – Reti43