powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Объединить два изображения
6 сообщений из 6, страница 1 из 1
Объединить два изображения
    #40086642
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Имеется две картинки jpg.
Нужно сделать одну картинку, в которой эти две картинки буду соединены по ветикали.
Нашел вот такое:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        byte[] img1 = // получаю массив байт из БД

        byte[] img2 = // получаю массив байт из БД
        ByteArrayInputStream bais1 = new ByteArrayInputStream(img1);
        BufferedImage image1 = ImageIO.read(bais1);
        ByteArrayInputStream bais2 = new ByteArrayInputStream(img2);
        BufferedImage image2 = ImageIO.read(bais2);
        BufferedImage combined = new BufferedImage(image1.getWidth() > image2.getWidth() ? image1.getWidth() : image2.getWidth(),
                image1.getHeight() + image2.getHeight(),
                BufferedImage.TYPE_INT_RGB);
        ByteArrayOutputStream baos = new ByteArrayOutputStream(combined.getWidth() * combined.getHeight());
        ImageIO.write(combined, JPG_FILE_EXTENTION, baos);
        baos.flush();
// В найденном пример было сделано так:
        String base64String = Base64.encodeBase64String(baos.toByteArray());
        baos.close();
        byte[] byteArray = Base64.decodeBase64(imgAll);
//
// Пробовал сделать так:
        byte[] byteArray = baos.toByteArray();
        // Далее сохраняю новый массив байт в БД 


В обоих случаях сохраняется картинка с правильными размерами, но вся залитая черным.
Пробовал просто соединить две Base64 строки:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        byte[] img1 = // получаю массив байт из БД

        byte[] img2 = // получаю массив байт из БД
        String image1Base64 = Base64.encodeBase64String(img1);
        String image2Base64 = Base64.encodeBase64String(img2);
        String imgAll = image1Base64 + image2Base64;

        byte[] byteArray = Base64.decodeBase64(imgAll);
// Далее сохраняю новый массив байт в БД


В результате в БД сохраняется одна картинка, а не объединенная из двух
так как img1 и img2 одинаковые, я не могу определить, какая из них сохранилась.
Подскажите, можно ли как-то нормально объединить два изображения в одно?
...
Рейтинг: 0 / 0
Объединить два изображения
    #40086647
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Гужанов,
Base64 причем?
Проверь свою бд как сохраняется байтовый массив.
Если байт в байт то не надо base64.
Проверить можно выплюнув картинки в файл.
...
Рейтинг: 0 / 0
Объединить два изображения
    #40086653
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Base64 я просто экспериментировал, неудачно.
В первом примере я делал так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
byte[] img1 = // получаю массив байт из БД

        byte[] img2 = // получаю массив байт из БД
        ByteArrayInputStream bais1 = new ByteArrayInputStream(img1);
        BufferedImage image1 = ImageIO.read(bais1);
        ByteArrayInputStream bais2 = new ByteArrayInputStream(img2);
        BufferedImage image2 = ImageIO.read(bais2);
        BufferedImage combined = new BufferedImage(image1.getWidth() > image2.getWidth() ? image1.getWidth() : image2.getWidth(),
                image1.getHeight() + image2.getHeight(),
                BufferedImage.TYPE_INT_RGB);
        ByteArrayOutputStream baos = new ByteArrayOutputStream(combined.getWidth() * combined.getHeight());
        ImageIO.write(combined, JPG_FILE_EXTENTION, baos);
        baos.flush();
        byte[] byteArray = baos.toByteArray();
        // Далее сохраняю новый массив байт в БД 


В БД картинки вижу нормально.
а результирующая картинка - все черное
...
Рейтинг: 0 / 0
Объединить два изображения
    #40086662
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Гужанов,
Значит нужно просто научится рисовать на изображении.
HelloWorld.
После этого копировать кусок изображения.
Дерзай.
Наверно и 10мин не работал.
...
Рейтинг: 0 / 0
Объединить два изображения
    #40086664
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял, почему у меня чернота в результирующем изображении: я же создаю ByteArrayOutputStream и добавляю в него BufferedImage. Но у BufferedImage я указываю только размеры, а само содержимое нет
...
Рейтинг: 0 / 0
Объединить два изображения
    #40086677
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработало вот так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
            byte[] img1 = // получаю массив байт из БД


            byte[] img2 = // получаю массив байт из БД
            ByteArrayInputStream bais1 = new ByteArrayInputStream(img1);
            BufferedImage image1 = ImageIO.read(bais1);
            ByteArrayInputStream bais2 = new ByteArrayInputStream(img2);
            BufferedImage image2 = ImageIO.read(bais2);
            BufferedImage combined = new BufferedImage(image1.getWidth() > image2.getWidth() ? image1.getWidth() : image2.getWidth(),
                    image1.getHeight() + image2.getHeight() + 5,
                    BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = combined.createGraphics();

            g2.drawImage(image1, null, 0, 0);
            g2.drawImage(image2, null, 0, image1.getHeight() + 5);
            g2.dispose();
            baos = new ByteArrayOutputStream(combined.getWidth() * combined.getHeight());
            ImageIO.write(combined, JPG_FILE_EXTENTION, baos);
            baos.flush();
            // Далее картинка сохраняется в БД
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Объединить два изображения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]