Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

int [][] to BufferedImage
Список форумов
 ->  Работа с изображениями (Advanced Imaging API)


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
initmax : 165
Новичок
Откуда: Moon

СообщениеФев 12, 2011 20:00 
Ответить с цитатой
Дано 2мерный массив интов содержащих 1 || 0 что является чернобелым изображением, каким образом посоветуете записать этот массив в BufferedImage?
изначльно я знаю размеры картинки и её тип "бинарное изоборажение"
вот таким образом создаю эту перименную
Код:
BufferedImage imgResult = new BufferedImage(img.getWidth(),img.getHeight(), BufferedImage.TYPE_BYTE_BINARY);

как в неё записать массив int [][] ?
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4801
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 14, 2011 11:32 
Ответить с цитатой
Имхо, проще просканировать и каждую точку проставить. Иначе - перегонять в одномерный массив int-ов, (черный - 0, белый - 0xFFFFFF), и потом через Tookit.createImage(ImageProducer) и java.awt.image.MemoryImageSource создавать Image, который пототм отрисовывать на BufferedImage.
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
initmax : 165
Новичок
Откуда: Moon

СообщениеФев 15, 2011 11:29 
Ответить с цитатой
> Имхо, проще просканировать и каждую точку проставить
каким образом?
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4801
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 15, 2011 12:20 
Ответить с цитатой
http://download.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html#setRGB(int, int, int)
http://download.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html#setRGB(int, int, int, int, int[], int, int)
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
initmax : 165
Новичок
Откуда: Moon

СообщениеФев 25, 2011 18:59 
Ответить с цитатой
Skipy писал(а):
http://download.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html#setRGB(int, int, int)
http://download.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html#setRGB(int, int, int, int, int[], int, int)


Всё перепробовал не выходит, дело в том что массив int[][] состоит из 1 || 0 т.е. хранит бинарное изображение, можно ли как-то его в BufferedImage чтобы получить чернобелое изображение?

> java.awt.image.MemoryImageSource
пользовать не могу, приложение под web

> Имхо, проще просканировать и каждую точку проставить
чем сканировать?
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4801
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 28, 2011 10:44 
Ответить с цитатой
initmax писал(а):
> java.awt.image.MemoryImageSource
пользовать не могу, приложение под web


С этого места и поподробнее. Я прекрасно использовал MemoryImageSource на сервере.

И давайте все-таки сформулируем изначальную задачу. Что есть, откуда, что надо сделать, куда отдать.
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
initmax : 165
Новичок
Откуда: Moon

СообщениеФев 28, 2011 23:33 
Ответить с цитатой
есть такая вот функция

Код:
 private int[][] applyFilterImage(ImageFilter imageFilter, BufferedImage img) {
        imageFilter.loadSourceImg(img);
        return imageFilter.filter(SysRes.CHAN_GRAYVAL);
    }


Она принимает переменную типизированного фильтра и картинку в видеBufferedImage. Возвращает двумерный массив интов.
именно этот самый массив динамической размерности который содержит только 1 || 0 необходимо преобразовать в картинку желательно в BufferedImage
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4801
Я тут живу!
Откуда: Москва, Россия

СообщениеМар 01, 2011 13:27 
Ответить с цитатой
Господи, ну вроде всё разжевали уже...

Вариант со сканированием:

Код:
package ru.skipy.tests;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;

/**
 * MonochromeImageTest
 *
 * @author Eugene Matyushkin aka Skipy
 * @since 01.03.2011
 */
public class MonochromeImageTest {

    static int[][] data = new int[][]{
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0},
            {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}
    };

    public static void main(String[] args) throws Exception{
        BufferedImage img = new BufferedImage(data[0].length, data.length, BufferedImage.TYPE_INT_RGB);
        for(int y=0; y<data.length; y++){
            for (int x=0; x<data[y].length; x++){
                img.setRGB(x,y,(data[y][x] == 0) ? 0xFFFFFF : 0x000000);
            }
        }
        ImageIO.write(img, "PNG", new FileOutputStream("./bitmap.png"));
    }
}

_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!


Последний раз редактировалось: Skipy (Мар 01, 2011 13:52), всего редактировалось 1 раз
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Skipy : 4801
Я тут живу!
Откуда: Москва, Россия

СообщениеМар 01, 2011 13:52 
Ответить с цитатой
Вариант с MemoryImageSource:

Код:
package ru.skipy.tests;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.MemoryImageSource;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * MonochromeImageTest
 *
 * @author Eugene Matyushkin aka Skipy
 * @since 01.03.2011
 */
public class MonochromeImageTest {

    static int[][] data = new int[][]{
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0},
            {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
            {0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
            {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}
    };

    public static void main(String[] args) throws Exception {
        int w = data[0].length;
        int h = data.length;
        int[] imgData = new int[w * h];
        for (int i = 0; i < imgData.length; i++) {
            imgData[i] = (1 - data[i / w][i % w]) * 0xFFFFFFFF;
        }
        MemoryImageSource mis = new MemoryImageSource(w, h, imgData, 0, w);
        Image img = Toolkit.getDefaultToolkit().createImage(mis);
        BufferedImage bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = bimg.createGraphics();
        while (!g.drawImage(img, 0, 0, null)) ;
        ImageIO.write(bimg, "PNG", new FileOutputStream("./bitmap-mis.png"));
    }
}

_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Работа с изображениями (Advanced Imaging API)


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru