В программе Java вы можете хранить изображения, такие как .png, .jpg и т. Д. В BufferedImage
. Я не думаю, что он работает для анимированных gif-изображений, поскольку он, кажется, теряет анимацию.Храните анимированный GIF-образ в программе Java
В настоящее время я получаю нормальные образы, как:
BufferedImage image = ImageIO.read(new URL(images.get(x)));
String type = images.get(x).substring(images.get(x).length() - 3, images.get(x).length());
ImageIO.write(image, type, new File(title + "/" + filename));
Где images
является String[]
из URL.
Что касается GIF изображения я получаю их:
byte[] b = new byte[1];
URL url = new URL(images.get(x));
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
DataInputStream di = new DataInputStream(urlConnection.getInputStream());
FileOutputStream fo = new FileOutputStream(title + "/" + filename);
while (-1 != di.read(b, 0, 1) && downloading)
fo.write(b, 0, 1);
di.close();
fo.close();
Но я хочу, чтобы хранить их в программе и записать их в файл в другой раз. Как хранить GIF, не записывая его в файл, но сохраняя его анимацию?
Как бы я начал записывать данные из 'DataInputStream' в' ByteArrayOutputStream'? –
@CodedApple Вы должны иметь возможность сделать это, просто заменив строку 'FileOutputStream fo = new FileOutputStream (...);' с 'ByteArrayOutputStream bo = new ByteArrayOutputStream();'. Затем, после того как вы написали gif в поток, вы можете получить байты, вызвав 'toByteArray'. Затем, когда вы хотите записать эти байты в файл, просто откройте новый 'FileOutputStream' и напишите в него массив байтов. – clearlyspam23