У меня есть код, который создает простой массив 5x5 java.awt.Color, а затем использует его для создания java.awt.image.BufferedImage. Края массива имеют непрозрачный цвет (alpha = 255), называемый o, а центр — прозрачный цвет (alpha = 0). называется t.
Наконец, я записываю изображение в файл, используя javax.imageio.ImageIO.write().
Вот код.
import java.awt.Color; импортировать java.awt.image.BufferedImage; импортировать java.io.File; импортировать javax.imageio.ImageIO; класс Не имеет значения { public static void main(String[] args) выдает исключение { окончательный цвет o = новый цвет (255, 0, 0, 255); //непрозрачный красный окончательный цвет t = новый цвет (0, 255, 0, 0); //прозрачный зеленый -- прозрачный Final Color[][] пикселей = //красные края с (в идеале) четким центром { {о, т, т, т, о}, {о, т, т, т, о}, {о, т, т, т, о}, {о, т, т, т, о}, {о, т, т, т, о} }; Изображение BufferedImage = новое BufferedImage(pixels.length, пикселей[0].length, BufferedImage.TYPE_INT_ARGB); for (int y = 0; y < пикселей.длина; y++) { for (int x = 0; x < пикселей[y].length; x++) { image.setRGB(x, y, пикселей[y][x].getRGB()); } } ImageIO.write(изображение, "gif", новый файл("abctest.gif")); ImageIO.write(изображение, "png", новый файл("abctest.png")); } } Однако вот получившаяся гифка. Я показываю его на фиолетовом фоне, чтобы показать, что изображение НЕ прозрачно в центре, как и ожидалось. На самом деле он черный.
Не обращайте внимания на нечеткость, это IrfanView раздражает.

А вот еще один в Microsoft Paint. Та же гифка.

Почему они нечеткие в центре? И я знаю, что правильно установил alpha, потому что помните, что я также сохранил его как в формате PNG, так и в формате GIF. Когда я сохраняю его в формате PNG, он работает как положено. Вот скриншоты в формате png.


Может ли кто-нибудь помочь мне указать правильное направление?
РЕДАКТИРОВАНИЕ. Вот пример изображения, которое я не создавал.

В IrfanView это выглядит так.

На этой гифке фиолетовый цвет виден правильно, и это меня смутило.
Но благодаря помощи @camickr я начинаю думать, что на самом деле это происходит только в IrfanView, потому что все другие программы просмотра изображений, через которые я просматривал это, работали. Сюда входят «Фотографии», «Ножницы», LibreOffice Draw и Firefox. Все они при рендеринге имели белый цвет (или цвет фона), подразумевая, что они на самом деле прозрачны.
Мобильная версия