Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jpeg, нужна помощь... 
V
    Опции темы
Warmbaby
Дата 2.7.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Привет! У меня очень мало опыта программирования на java. Если у вас есть какие-нибудь идеи, поделитесь пожалуйста)
Мне нужно написать программу, которая по ссылке загружает файл- картинку формата jpeg, "вытаскивает" из самого файла уменьшенную копию картинки и сохраняет исходный файл и отдельно уменьшенную копию на диск. Т.е., само изображение уменьшать не нужно, нужно сделать из одного файла два.

PM MAIL   Вверх
batigoal
Дата 2.7.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



А в чем, конкретно, проблема? Все эти элементы по отдельности на форуме уже не раз обсуждались, поищи (чтение картинки, ресайз, сохранение в файл).


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Warmbaby
Дата 2.7.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Чтение и сохранение в файл - это понятно.  Но мне нужен не ресайз, а создать новый файл формата jpeg, который содержит часть данного, в jpeg-файлах есть уменьшенные копии изображения.

Это сообщение отредактировал(а) Warmbaby - 2.7.2007, 12:08
PM MAIL   Вверх
Warmbaby
Дата 2.7.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Вот что я нашла о jpeg-файлах, но полностью разобраться сама не могу.... smile 

http://wap.netghost.ru/gff/graphics/summary/jfif_ru.html
http://vbzero.narod.ru/chapter3/article_4.htm 
http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format 

Это сообщение отредактировал(а) Warmbaby - 2.7.2007, 13:12
PM MAIL   Вверх
_Y_
Дата 2.7.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Цитата(Warmbaby @ 2.7.2007,  13:06)
Вот что я нашла о jpeg-файлах

IMHO Вы не туда копаете. Совершенно не нужно разбираться в формате JPG. Надо просто найти уже готовый Java класс (или несколько), обладающий нужной Вам функциональностью и его использовать. Задача-то у Вас, похоже, стандартная до безобразия. Я вот навскидку нашел такое:
http://mindprod.com/jgloss/jpegencoder.html  и такое http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Image.htm
да и вообще начал бы с того, что посмотрел стандартные классы, наследующие от Image


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Maksym
Дата 2.7.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Warmbaby
List of Java libraries to read and write pixel image files -- полно реализаций по работе с основными растровыми форматами, в том числе и jpg. Выберите что-нибудь фришное и при этом достаточно популярное и пользуйтесь на здоровье. Как правильно заметил _Y_, чтобы проделать описанную операцию ничего про формат знать не нужно.
PM MAIL   Вверх
v2v
Дата 2.7.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



Warmbaby, а какая разница в этот же файл сохранять или другой, вот когда то писал функцию, вроде работает нормально ...
Код

  public static boolean TransformImage(String inFile, String outFile, int NewWidth, int NewHeigth)
    {
        try
        {
                 BufferedImage inImage = ImageIO.read(new File(inFile));
            double dx = (double)NewWidth / (double)inImage.getWidth();
            double dy = (double)NewHeigth / (double)inImage.getHeight();
            BufferedImage outImage = new BufferedImage(NewWidth,NewHeigth, BufferedImage.TYPE_INT_RGB);
            AffineTransform scale = AffineTransform.getScaleInstance(dx, dy);
            Graphics2D g2 = (Graphics2D) outImage.getGraphics();
            g2.drawImage(inImage, scale, null);
            ImageIO.write(outImage, "JPG", new File(outFile));
            return true;
        }
        catch(Exception e)
        {
            e.printStackTrace();    
            return false;
        }    
    }



Добавлено @ 19:13
зы. Если тебе надо изменять область рисунка и ты точно знаешь с какой по какую точки прямоугольник тебе надо выбирать... смотри в сторону Graphics2D .

Это сообщение отредактировал(а) v2v - 2.7.2007, 19:13


--------------------
PM   Вверх
Warmbaby
Дата 3.7.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Спасибо за ответы smile 
Я вот нашла кое-что http://java.sun.com/j2se/1.4.2/docs/guide/...fm3.html#998353 - попробую так.
PM MAIL   Вверх
Warmbaby
  Дата 5.7.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Мне нужно использовать ImageReader. Я пишу так
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,false);
...

Но выдается ошибка - ImageInputStream cannot be resolved to a typе

 smile 


Это сообщение отредактировал(а) Warmbaby - 5.7.2007, 10:32
PM MAIL   Вверх
kkorsakoff
Дата 5.7.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Похоже вы легких путей не ищетеsmile
Почему нельзя вместо всего этого испольовать

Код

URL adr=new URL(address);
BufferedImage img=ImageIO.read(adr);

PM MAIL WWW ICQ   Вверх
Warmbaby
Дата 5.7.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Но после этого как мне использовать класс ImageReader? Как описать поток ввода??
PM MAIL   Вверх
kkorsakoff
Дата 5.7.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



А зачем? Вам же надо прочитать изображение и потом его уменьшить.

Пример то привели выше v2v.

А если вы хотите считать Thumbnail как по ссылке, которую привели вы, так ничего у вас не получится:(
JPEG не их тех форматов, которые могут хранить в себе уменьшенные копии основного изобюражение
PM MAIL WWW ICQ   Вверх
Warmbaby
Дата 5.7.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Мне нужно именно прочитать Thumbnail, и JPEG может содержать в себе уменьшенную копию, а иногда и не одну. Если картинку создавали\изменяли в photoshop или acdsee, например, то там обязательно есть Thumbnail (это я проверяла). Не могу понять из-за чего ошибка  smile 
PM MAIL   Вверх
kkorsakoff
Дата 5.7.2007, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Простите, не знал

http://en.wikipedia.org/wiki/JFIF

А чем вы сохранете файлы, что они с тумбами сохраняются?
Можно мне прислать такой поковыряться?smile
PM MAIL WWW ICQ   Вверх
AlexeyVorotnikov
Дата 5.7.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(Warmbaby @  5.7.2007,  10:26 Найти цитируемый пост)
Но выдается ошибка - ImageInputStream cannot be resolved to a typе


А у Вас в начале программы стоит
Код

import javax.imageio.stream.ImageInputStream

?


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.