Nano Hash - криптовалюты, майнинг, программирование

Как сохранить массив байтов в виде файла изображения на диске?

У меня есть представление массива байтов изображения. Как сохранить его на диске в виде файла изображения.

я уже сделал это

OutputStream out = new FileOutputStream("a.jpg");
out.write(byteArray);
out.flush();
out.close();

Но когда я открываю изображение, дважды щелкнув его, оно не показывает никакого изображения.

26.01.2010

  • Вы хотите записать его в формате PNG или JPG или просто так, чтобы вы могли прочитать его в какой-то момент? 26.01.2010
  • у вас есть массив, который вы можете передать в image.setRGB? 26.01.2010
  • Откуда вы взяли byte[]? Вам нужно знать, какой у него формат (JPEG, GIF, PNG, BMP...) 26.01.2010
  • Я думаю, что это связано с его другим вопросом: заголовок stackoverflow.com/questions/2138961/ 26.01.2010

Ответы:


1

Помимо отказа от использования блока try/finally (по крайней мере, в коде, который вы показали), это должно быть хорошо. (Кстати, вам не нужно сбрасывать поток вывода, если вы его закрываете.)

Поскольку он не работает, это означает, что byteArray фактически не содержит изображение в формате JPEG. Как вы создали byteArray для начала? Если это «сырое» представление, вы, вероятно, захотите его закодировать, например. используя javax.imageio упаковка.

26.01.2010
  • Не могли бы вы также взглянуть на stackoverflow.com/questions/ 2132657/ .... На самом деле все предлагали мне использовать архитектуру MVC для свинга.... но я не хочу этого ответа.... Я уже знаю это... Мне нужно предложение или образец примера свинга, код графического интерфейса которого разделен на несколько файлов... чтобы я мог разобраться в своей собственной проблеме... я много искал в Google, но не смог получить любой такой пример ... 26.01.2010

  • 2

    Вы можете использовать класс FileOutputStream:

    FileOutputStream fos = new FileOutputStream("image.jpg");
    try {
        fos.write(someByteArray);
    }
    finally {
        fos.close();
    }
    
    26.01.2010

    3

    Вы можете использовать ImageIO API.

    Детали могут быть немного запутанными, но сначала вы, вероятно, захотите создать BufferedImage, используя тип TYPE_BYTE_INDEXED и какой-нибудь подходящий экземпляр IndexColorModel. Затем поместите туда свой массив байтов. Подсказка: вы можете получить внутреннее представление BufferedImage с помощью:

    myDataBuffer = myBufferedImage.getRaster().getDataBuffer();
    

    Который, скорее всего, вернет буфер данных типа DataBufferByte (проверьте!), из которого вы получите массив байтов с

    myByteArray = ((DataBufferByte) myDataBuffer).getData();
    

    Затем вы можете использовать System.arraycopy, чтобы скопировать на него массив байтов.

    26.01.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..