Привет! У меня очень мало опыта программирования на java. Если у вас есть какие-нибудь идеи, поделитесь пожалуйста)
Мне нужно написать программу, которая по ссылке загружает файл- картинку формата jpeg, "вытаскивает" из самого файла уменьшенную копию картинки и сохраняет исходный файл и отдельно уменьшенную копию на диск. Т.е., само изображение уменьшать не нужно, нужно сделать из одного файла два.
Jpeg
Модератор: Absurd
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
warmbabe, а в чём заключается вопрос?
1. скачиваешь файл (java.net.URLConnection)
2. создаёшь превью (java.awt.image.BufferedImage; java.awt.geom.AffineTransform)
3. сохраняешь на диске (java.io.FileWriter)
1. скачиваешь файл (java.net.URLConnection)
2. создаёшь превью (java.awt.image.BufferedImage; java.awt.geom.AffineTransform)
3. сохраняешь на диске (java.io.FileWriter)
Вопрос в том, как создать это превью. А точнее, не создать, а вытащить...
Да, позволяет. Там может быть и больше одной уменьшенной копии. Но может и не быть копий вообще. Это зависит от программы, с помощью которой эта картинка была создана. Я нашла класс ImageReader, там есть такая возможность http://java.sun.com/j2se/1.4.2/docs/gui ... s.fm3.html , но я не могу разобраться, как описать объект этого класса и поток ввода для него, который я сделала из URL
(URL adr = new URL(address);
BufferedReader br = new BufferedReader(new InputStreamReader(adr.openStream())); )
(URL adr = new URL(address);
BufferedReader br = new BufferedReader(new InputStreamReader(adr.openStream())); )
Я пытаюсь написать так
try{
URL adr = new URL(address);
InputStream is = adr.openStream();
ImageInputStream iis = ImageIO.createImageInputStream(is);
Iterator readers = ImageIO.getImageReaders(iis);
ImageReader reader = (ImageReader).readers.next();
reader.setInput(iis,true);
...
Но выдается ошибка - ImageInputStream cannot be resolved to a typе

try{
URL adr = new URL(address);
InputStream is = adr.openStream();
ImageInputStream iis = ImageIO.createImageInputStream(is);
Iterator readers = ImageIO.getImageReaders(iis);
ImageReader reader = (ImageReader).readers.next();
reader.setInput(iis,true);
...
Но выдается ошибка - ImageInputStream cannot be resolved to a typе

- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
[syntax="java"]import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.util.Iterator;
import javax.imageio.*;
import javax.imageio.stream.*;
public class ImageThumbnail {
public static void main(String[] args) {
try{
String urlAdress = "url";
int imageIndex = 0;
int thumbnailIndex = 0;
String fileName = "file";
URL url = new URL(urlAdress);
InputStream inputStream = url.openStream();
ImageInputStream imageInputStream = ImageIO.createImageInputStream(inputStream);
Iterator readers = ImageIO.getImageReaders(imageInputStream);
ImageReader reader = (ImageReader)readers.next();
reader.setInput(imageInputStream, true);
BufferedImage image = reader.readThumbnail(imageIndex, thumbnailIndex);
OutputStream outputStream = new FileOutputStream(fileName);
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(outputStream);
Iterator writers = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)writers.next();
writer.setOutput(imageOutputStream);
writer.write(image);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/syntax]
не проверял
возможно ещё надо потоки закрыть или output.flush()
import java.io.*;
import java.net.URL;
import java.util.Iterator;
import javax.imageio.*;
import javax.imageio.stream.*;
public class ImageThumbnail {
public static void main(String[] args) {
try{
String urlAdress = "url";
int imageIndex = 0;
int thumbnailIndex = 0;
String fileName = "file";
URL url = new URL(urlAdress);
InputStream inputStream = url.openStream();
ImageInputStream imageInputStream = ImageIO.createImageInputStream(inputStream);
Iterator readers = ImageIO.getImageReaders(imageInputStream);
ImageReader reader = (ImageReader)readers.next();
reader.setInput(imageInputStream, true);
BufferedImage image = reader.readThumbnail(imageIndex, thumbnailIndex);
OutputStream outputStream = new FileOutputStream(fileName);
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(outputStream);
Iterator writers = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)writers.next();
writer.setOutput(imageOutputStream);
writer.write(image);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/syntax]
не проверял
возможно ещё надо потоки закрыть или output.flush()