Написание GIF-файла на Java - PullRequest
       25

Написание GIF-файла на Java

1 голос
/ 18 декабря 2008

Так что у меня есть этот GIF-файл на моем рабочем столе (это 52-карточная колода карт покера). Я работал над программой, которая разбивает ее на маленькие acm.graphics.GImages каждой карты. Однако теперь я хочу записать эти GImages или пиксельные массивы в файл, чтобы я мог использовать их позже. Я думал, что это будет так же просто, как написание .txt файлов, но после нескольких поисков в Google я запутался больше, чем раньше.

Итак, как мне сделать файлы .gif из пиксельных массивов или GImages (у меня есть куча обоих)?

Ответы [ 3 ]

7 голосов
/ 18 декабря 2008

Что-то в этом духе должно помочь (измените тип изображения, размеры и массив пикселей соответственно):

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

WritableRaster raster = image.getRaster();
for ( i=0; i<width; i++ ) {
    for (  j=0; j<height; j++ ) {
        int[] colorArray = getColorForPixel(pixels[i][j]);
        raster.setPixel(i, j, colorArray);
    }
}

ImageIO.write(image, "gif", new File("CardImage"));

'getColorForPixel' потребуется вернуть массив, представляющий цвет для этого пикселя. В этом случае, используя RGB, colorArray будет иметь три целых числа [красный] [зеленый] [синий].

Соответствующий javadoc: WritableRaster , BufferedImage и ImageIO .

1 голос
/ 18 декабря 2008

Мне нужно было создать GIF из Java Images для университетского проекта, и я нашел это. Я бы порекомендовал класс GifEncoder с открытым исходным кодом Acme. Хороший и простой в использовании, я до сих пор помню его более 2 лет спустя. Вот ссылка: http://www.acme.com/java/software/Acme.JPM.Encoders.GifEncoder.html

А вот и G-Link: http://www.google.com/search?hl=en&q=acme+java+gif&btnG=Search

0 голосов
/ 18 декабря 2008

Это на самом деле не отвечает на ваш вопрос напрямую, но не будет ли проще использовать ImageMagick ? Имеет Java-привязки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...