Изображение в градациях серого - PullRequest
3 голосов
/ 07 февраля 2010

У меня все еще есть проблема с сохранением серого изображения с помощью Java. Как я мог это сделать? Формат не так важен, но не должно быть сжатия изображения.

Кто-нибудь знает это?

1 Ответ

3 голосов
/ 07 февраля 2010

Возможно, это не самый элегантный метод, но он будет работать:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class ImageTest {


    public static void main(String[] args) throws IOException {

        int width = 10 // width of your image
        int height = 10 // height of your image

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


        for (int x = 0; x < width; ++x)
        {
            for (int y = 0; y < height; ++y)
            {
                int grayscale = ... // get your greyscale value 0..255 from your array here.
                int colorValue = grayscale | grayscale << 8 | grayscale << 16;
                img.setRGB(x, y, colorValue);
            }

        }

        ImageIO.write(img, "png", new File("output.png"));
    }

}

Значение colorValue состоит из r, g и b (b в младшем байте, g перед этим и r перед этим) Поскольку ваше изображение в оттенках серого, вы можете просто использовать те же значения r, g и b для вашего изображения, поэтому вы можете просто сделать:

int colorValue = grayscale | grayscale << 8 | grayscale << 16;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...