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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сжать jpg 
V
    Опции темы
DoZENT
Дата 9.10.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день! Есть изображение в формате BufferedImage. Можно ли сжать его, уменьшив качество? В делфи для jpg был отдельный класс, можно было проставить свойство jpegquality. Есть ли в java что-то подобное?


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
garbuz
Дата 9.10.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Может gzip вам подойдет  smile 
PM MAIL   Вверх
DoZENT
Дата 9.10.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(garbuz @  9.10.2008,  17:53 Найти цитируемый пост)
Может gzip вам подойдет   

т.е. обертки jpg нет? придется через заднее место делать?


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Дрон
Дата 9.10.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



ImageIO тебе в помощь.
http://java.sun.com/j2se/1.4.2/docs/api/ja...io/ImageIO.html
В простейшем случае подойдёт:
Код
static boolean    write(RenderedImage im, String formatName, File output) 

Если надо более сложное -- разбирайся с классом ImageWriter:
http://java.sun.com/j2se/1.4.2/docs/api/ja...mageWriter.html


Это сообщение отредактировал(а) Дрон - 9.10.2008, 18:24


--------------------
Да. Именно так.
PM   Вверх
DoZENT
Дата 9.10.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Дрон @  9.10.2008,  18:18 Найти цитируемый пост)
static boolean    write(RenderedImage im, String formatName, File output) 

что-то я не понял, это же вроде функция обычного сохранения изображения в файл? Сжать-то это изображение можно?



--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
vicod
Дата 9.10.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

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



Код

import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.Locale;
 
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream;
import javax.imageio.ImageWriteParam.*;
 
public class FI {
    public static void main(String[] args) throws IOException {
        File input = new File("images/cougar.jpg");
        System.out.println("input size " + input.length());
        float[] values = { 1.0f, 0.9f, 0.8f, 0.7f };
 
        for(int j = 0; j < values.length; j++) {
            File output = new File("fi.jpg");
            float compression = values[j];
            compressJpegFile(input, output, compression);
 
            System.out.println("output size " + output.length() +
                               "    compression factor " + compression);
            // after the ImageOutputStream is closed
            output.delete();
        }
    }
 
    public static void compressJpegFile(File infile, File outfile,
                                        float compressionQuality) {
        try {
            RenderedImage rendImage = ImageIO.read(infile);
            ImageWriter writer = null;
            Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
            if (iter.hasNext()) {
                writer = (ImageWriter)iter.next();
            }
 
            ImageOutputStream ios = ImageIO.createImageOutputStream(outfile);
            writer.setOutput(ios);
            JPEGImageWriteParam iwparam=new JPEGImageWriteParam(Locale.getDefault());
//            ImageWriteParam iwparam = //new NewImageWriteParam();
//                                      writer.getDefaultWriteParam();
            iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ;
            iwparam.setCompressionQuality(compressionQuality);
            writer.write(null, new IIOImage(rendImage, null, null), iwparam);
            ios.flush();
            ios.close();
            writer.dispose();
        } catch (IOException ioe) {
            System.out.println("write error: " + ioe.getMessage());
        }
    }
}

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


Java-ненавистник :)
****


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

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



Цитата(DoZENT @  9.10.2008,  21:11 Найти цитируемый пост)
Сжать-то это изображение можно?

А что значит сжать?



--------------------
Да. Именно так.
PM   Вверх
DoZENT
Дата 9.10.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Дрон @  9.10.2008,  20:33 Найти цитируемый пост)
А что значит сжать?

значит уменьшить качество изображения. Спасибо, ваш пример помог! Только учусь джаве, буду еще ооочень много спрашивать)))


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Дрон
Дата 9.10.2008, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



DoZENT, спасибо надо было не мне говорить, а vicod -- он привёл подробный пример, а я лишь сказал, какие классы использовать smile


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


Опытный
**


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

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



Цитата(Дрон @  9.10.2008,  22:37 Найти цитируемый пост)
DoZENT, спасибо надо было не мне говорить, а vicod -- он привёл подробный пример, а я лишь сказал, какие классы использовать 

блин)) ему тоже плюс))


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
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.1004 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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