Я читаю gif
изображение из интернет-url.Записать анимированный-gif, хранящийся в BufferedImage, в java.io.File Object
// URL of a sample animated gif, needs to be wrapped in try-catch block
URL imageUrl = new Url("http://4.bp.blogspot.com/-CTUfMbxRZWg/URi_3Sp-vKI/AAAAAAAAAa4/a2n_9dUd2Hg/s1600/Kei_Run.gif");
// reads the image from url and stores in BufferedImage object.
BufferedImage bImage = ImageIO.read(imageUrl);
// creates a new `java.io.File` object with image name
File imageFile = new File("download.gif");
// ImageIO writes BufferedImage into File Object
ImageIO.write(bImage, "gif", imageFile);
Код успешно выполнен. Но сохраненное изображение не анимируется, как исходное изображение.
У меня есть посмотрел на многие вопросы/ответы о переполнении стека, но я не могу пройти через это. Большинство из них делают это по BufferedImage
по кадру, что изменяет частоту кадров. Мне не нужны изменения исходного изображения. Я хочу загрузить его так же, как и с тем же размером, с тем же разрешением и с той же частотой кадров.
Пожалуйста, имейте в виду, что я хочу, чтобы избежать использования streams
и unofficial-libraries
столько, сколько я могу (если это не может быть сделано без них, я буду использовать их).
Если есть альтернатива ImageIO
или тому, как я читаю изображение с URL-адреса, и это делает все, пожалуйста, укажите мне в этом направлении.
вы удивительным. просто хочу спросить, могу ли я использовать его с 1000 вызовами в 'for-loop', будет ли он работать последовательно или мне нужен« синхронизированный »блок? – rupinderjeet
Цикл for не выполняет код в нескольких потоках. Он просто выполняет свое тело последовательно, в одном потоке. Поэтому синхронизация бесполезна. Но даже если вы выполнили этот код в нескольких потоках, существует 0 разделяемых состояний между потоками, поэтому синхронизировать доступ нет. Синхронизация необходима, когда mutiple одновременные потоки получают доступ к общему изменяемому состоянию. У вас нет нитей. У вас нет состояния. –
Я не уверен, что вы подразумеваете под «упражнением». Вы имеете в виду выполнение вышеуказанного кода для 1000 разных URL-адресов, запись в 1000 разных файлов, не так ли? –