Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли это ускорить / 25 сообщений из 76, страница 1 из 4
10.11.2016, 15:14
    #39344949
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
пошаговое уменьшение размера картинки. такое необходимо для сохранения качества уменьшенной картинки
возможно ли ускорить? не только сампроцесс преобразоания, вплоть до окончания сохранения
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
     while (step-- != 0) {
                        tr = new AffineTransform();
                        tr.scale(trans, trans);
                        op = new AffineTransformOp(tr, AffineTransformOp.TYPE_BICUBIC);
                        bi2 = new BufferedImage(w.intValue(), h.intValue(), bi.getType());
                        op.filter(bi, bi2);
                        if (step == 0) {
                            break;
                        }
                        bi = bi2.getSubimage(0, 0, w.intValue(), h.intValue());

                        trans = .5;
                        w = w / 2;
                        h = h / 2;

                    }
                    try {
                        UUID uuid = UUID.randomUUID();
                        ImageIO.write(bi2, "jpg", new File("C:\\Temp\\xxx\\" + uuid.toString() + ".jpg"));
                    } catch (IOException ex) {
                        Logger.getLogger(Page5.class.getName()).log(Level.SEVERE, null, ex);
                    }
...
Рейтинг: 0 / 0
10.11.2016, 15:19
    #39344961
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
вадяпошаговое уменьшение размера картинки. такое необходимо для сохранения качества уменьшенной картинки
Поищи на Хабре, вроде, была хорошая статья об уменьшении. По-моему там только 2х проходов достаточно. Blur и само уменьшение.

вадяне только сампроцесс преобразоания, вплоть до окончания сохранения
А по-русски это как будет?

вадя[src JAVA][/src]
В код вникать тяжело, похоже что он написан не для того чтобы кто-то когда-либо его читал.
...
Рейтинг: 0 / 0
10.11.2016, 15:20
    #39344962
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
вадяпошаговое уменьшение размера картинки. такое необходимо для сохранения качества уменьшенной картинки
готовое не интересует что ли?
...
Рейтинг: 0 / 0
10.11.2016, 15:23
    #39344965
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
Petro123готовое не интересует что ли?
Например?
...
Рейтинг: 0 / 0
10.11.2016, 15:28
    #39344971
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
BlazkowiczPetro123готовое не интересует что ли?
Например?
Chris Campbell's incremental scaling
https://github.com/rkalla/imgscalr
...
Рейтинг: 0 / 0
10.11.2016, 15:40
    #39344990
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
Примерно так и уменьшают.
1) Если хочется побыстрее, то вполне хватит билинейной интерполяции, на качестве вряд ли скажется.
2) вот это зачем?
Код: java
1.
bi = bi2.getSubimage(0, 0, w.intValue(), h.intValue());


3) деление на 2 можно ускорить :)
Код: java
1.
w = w >> 1;
...
Рейтинг: 0 / 0
10.11.2016, 16:08
    #39345028
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
вадяпошаговое уменьшение размера картинки. такое необходимо для сохранения качества уменьшенной картинки
возможно ли ускорить? не только сампроцесс преобразоания, вплоть до окончания сохранения
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
     while (step-- != 0) {
                        tr = new AffineTransform();
                        tr.scale(trans, trans);
                        op = new AffineTransformOp(tr, AffineTransformOp.TYPE_BICUBIC);
                        bi2 = new BufferedImage(w.intValue(), h.intValue(), bi.getType());
                        op.filter(bi, bi2);
                        if (step == 0) {
                            break;
                        }
                        bi = bi2.getSubimage(0, 0, w.intValue(), h.intValue());

                        trans = .5;
                        w = w / 2;
                        h = h / 2;

                    }
                    try {
                        UUID uuid = UUID.randomUUID();
                        ImageIO.write(bi2, "jpg", new File("C:\\Temp\\xxx\\" + uuid.toString() + ".jpg"));
                    } catch (IOException ex) {
                        Logger.getLogger(Page5.class.getName()).log(Level.SEVERE, null, ex);
                    }


Алгоритм зависнет при входе в цикл с step = -1.
...
Рейтинг: 0 / 0
10.11.2016, 16:12
    #39345032
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
SQL2008Алгоритм зависнет при входе в цикл с step = -1.
И больше вас ничего в этой каше не смущает?
...
Рейтинг: 0 / 0
10.11.2016, 16:12
    #39345033
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
А потом сломается из-за переполнения значения типа.
...
Рейтинг: 0 / 0
10.11.2016, 16:19
    #39345037
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
авторА по-русски это как будет?
может ImageIO.write заменить на что-то другое.
алгоритм проверен, сначала высчитывается число шагов , с учётом , что уменьшение не может быть разово больше 2 .
первое уменьшение меньше двух, очтальные 2.
авторавторПоищи на Хабре, вроде, была хорошая статья об уменьшении. По-моему там только 2х проходов достаточно. Blur и само уменьшение.
смотрел. этот вариант плохой....

авторChris Campbell's incremental scaling
там кода по-боле, суть таже.
с new что по-другому или ещё что.

авторw = w >> 1 сильно ускорит?
авторАлгоритм зависнет при входе в цикл с step = -1. ситуация исключена
...
Рейтинг: 0 / 0
10.11.2016, 16:21
    #39345039
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
BlazkowiczSQL2008Алгоритм зависнет при входе в цикл с step = -1.
И больше вас ничего в этой каше не смущает?
если есть что исправить - я слушаю
...
Рейтинг: 0 / 0
10.11.2016, 16:23
    #39345041
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
при копировании - в конце пропала }
...
Рейтинг: 0 / 0
10.11.2016, 16:28
    #39345042
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
вадяавторChris Campbell's incremental scaling
там кода по-боле, суть таже.
переведи)).
Или ты опять про то что свои велосипеды лучше.
...
Рейтинг: 0 / 0
10.11.2016, 16:29
    #39345043
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
вадяесли есть что исправить - я слушаю
- Странные условия выхода из цикла
- Почему-то два одинаковых условия выхода из цикла в 2х разных местах. Для чего второе?
- Однобуквенные имена переменных, даже там где их назначение не очевидно
...
Рейтинг: 0 / 0
10.11.2016, 16:44
    #39345052
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
авторИли ты опять про то что свои велосипеды лучше.
принимаются любые предложения , даже не очевидные, лишь бы ускорилось

- Странные условия выхода из цикла
- Почему-то два одинаковых условия выхода из цикла в 2х разных местах. Для чего второе?
- Однобуквенные имена переменных, даже там где их назначение не очевидно


step-- != 0 - сначало происходит сравнение , потом уменьшение

Код: java
1.
2.
3.
4.
                        if (step == 0) {
                            break;  // это нужно , чтоб не выполнялась следующая строка
                        }
                        bi = bi2.getSubimage(0, 0, w.intValue(), h.intValue()); // эта и ниже 


однобуквенные -ширина и высота.
...
Рейтинг: 0 / 0
10.11.2016, 16:56
    #39345060
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
и что происходит с памятью
при таких операциях в цикле
Код: java
1.
2.
3.
[SRC JAVA]tr = new AffineTransform();
op = new AffineTransformOp(tr, AffineTransformOp.TYPE_BICUBIC);
bi2 = new BufferedImage(w.intValue(), h.intValue(), bi.getType());

[/SRC]
каждый раз выделяется новое? тогда когда старое доступно для использования?
...
Рейтинг: 0 / 0
10.11.2016, 17:09
    #39345066
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
вадя,
афинные преобразования тут не нужны - изображение не вращается, и уменьшается в одинаковых пропорциях. Сразу рисуем в уменьшенное изображение:
Код: java
1.
2.
3.
4.
5.
6.
7.
Graphics2D graphics = bi2.createGraphics();
try {
	graphics.setRenderingHints(hints);
	graphics.drawImage(bi, 0, 0, w, h, null);
} finally {
	graphics.dispose();
}


ну и в хинтах настойчиво рекомендую билинейную интерполяцию: изображение каждый раз уменьшается в 2 раза либо меньше, таким образом билинейной интерполяции достаточно для покрытия всех пикселей исходного изображения. Чуть хуже качество, а скорость заметно выше.
...
Рейтинг: 0 / 0
10.11.2016, 17:25
    #39345082
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
Blazkowicz- Почему-то два одинаковых условия выхода из цикла в 2х разных местах. Для чего второе?
очевидно же - оптимизирует человек, не хочет делать лишних действий (на последнем шаге подготовка к следующему не нужна). :)

P.S. На что только люди не пойдут ради теплого лампового звука.
...
Рейтинг: 0 / 0
10.11.2016, 17:30
    #39345088
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
вадяи что происходит с памятью
каждый раз выделяется новое? тогда когда старое доступно для использования?
Это ж java - забей.

С другой стороны, народ недоумевает, почему вместо того, чтоб сделать bi=bi2, ты из bi2 вырезаешь фрагмент равный самому bi2. Или там какие-то камни?
...
Рейтинг: 0 / 0
10.11.2016, 17:30
    #39345089
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
ivanraСразу рисуем в уменьшенное изображение
В предыдущих версиях JDK качество этого подхода было очень сомнительным. Отсюда и попытки сделать лучше. Но смысл многоходного уменьшения, если blur дает результат не хуже, я не очень понимаю.
...
Рейтинг: 0 / 0
10.11.2016, 17:34
    #39345093
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
Blazkowicz если blur дает результат не хуже
Мы же говорим о субъективных предпочтениях. Понятно, что и то и другое вносит дополнительные искажения, вопрос лишь в том, какие глазу приятнее.
...
Рейтинг: 0 / 0
10.11.2016, 17:37
    #39345101
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
Некоторые сами сплайны запрограммировать предпочитают.
...
Рейтинг: 0 / 0
10.11.2016, 17:41
    #39345104
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
Сергей АрсеньевМы же говорим о субъективных предпочтениях. Понятно, что и то и другое вносит дополнительные искажения, вопрос лишь в том, какие глазу приятнее.
Вы что-то путаете. Вадя говорит об уменьшении, а не увеличении изображения. У этих двух задач слегка разные проблемы.
...
Рейтинг: 0 / 0
10.11.2016, 17:50
    #39345112
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
Blazkowicz,

Проблема одна - набегают искажения. Выражается по разному.

Те же проблемы у фанатов правильных шрифтов, быстро не качественно, качественно - мыло и муар.
...
Рейтинг: 0 / 0
10.11.2016, 17:51
    #39345115
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли это ускорить
автор Но смысл многоходного уменьшения, если blur дает результат не хуже, я не очень понимаю.
я проверял всякие преобразования...какие бы не были - шаг должен быть не более 2 .
авторС другой стороны, народ недоумевает, почему вместо того, чтоб сделать bi=bi2, ты из bi2 вырезаешь фрагмент равный самому bi2. Или там какие-то камни?
это вроде только присваивает ссылку на объект.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли это ускорить / 25 сообщений из 76, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]