|
|
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, посмотри библиотеку, упомянутую здесь http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/ Там есть ссылки на альтернативы и статьи по теме. PS авторвынести в отдельный метод масштабирование? что это принципиально изменит? наглядность кода - вопрос спорный, экономию памяти? вадя, даже не хочется начинать разглядывать код, не то, что советовать что-то, после таких заходов. (Нет смысла заботиться об экономии памяти, если качество кода тебя устраивает.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 16:18 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
авторвадя, даже не хочется начинать разглядывать код, не то, что советовать что-то, после таких заходов. (Нет смысла заботиться об экономии памяти, если качество кода тебя устраивает.) в самом начале моего знакомства с java - я ознакомился( из разных источников) что однозначно, категорично надо использовать геттеры и сеттеры. счас же на видео с семинаров и статьях - говорят, что это не обязательно. потом я читал высказываня , что рефлексия - зло, за которое надо наказывать, счас на тех же саминарах - если это удобно = используйте. если есть обоснования, чем моё решение плохо - я с удовольствием изучу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 16:38 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадяmaytonвадя, так что? Разобрался что пожирает память? Кто этот загадочный "лангольер"... ? пока нет. надо проверить код ivanra и Blazkowicz а для этого надо набраться смелости :) если есть мысли что можно поправить с наименьшими переделками - проверю. Для меня твой код, особенно в части работы с org.apache.poi - это тёмный ящик. Я не использовал его. И поэтому говорить о каких-то мемори оверхедах было-бы опрометчиво. Я также не знаю какого размера картинки ты уменьшаешь. А их размер скорее всего влияет на потребление памяти. Если у тебя 16-мегапиксельные фотки то -Xmx256m скорее всего будет маловато. Да и вообще. Куча такого размера не котируется даже для других более простых приложений. Что там смеслости набираться? Купи бутылку крепкого пива - и Go!Go! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 16:57 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, авторчем моё решение плохо "твое решение" идеально. Не обращай внимания. И, хотя, в целом, так не программируют если не с 1953, то с 1970-го года, (даже если используют goto), в твоем случае это не имеет ни малейшего значения. Т.к. это не программа, а одноразовый скрипт, который ты не планируешь больше нигде использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 17:03 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
взял этот метод без изменений вот результат файл ivanra . остальные - моим вариантом, my_0_5 - качество 0.5 , my_1_0 - качество 1 результаты говорят самиза себя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 17:17 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
поторопился .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2015, 17:18 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
Действительно, при последовательном уменьшении в 2 раза качество лучше (информация не теряется). Вот еще статья, где есть сравнение качества и скорости ресайза: https://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html Ну а для алгоритма такие хинты: - в статье предлагается, если уменьшаем не ровно на степень двойки, сначала произвести уменьшение на дробную часть, а на следующих шагах - в 2 раза. В приведенном алгоритме на первом шаге - увеличение (до 2х раз). Для мегапиксельных картинок получаем расход памяти: Код: plaintext 1. для себя написал такое масштабирование по большей стороне (maxDim - целевое значение): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 11:48 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
Если-бы картинка была bitmap то можно было-бы реализовать очень рациональный с точки зрения memory подход. Нам не нужно было-бы прогружать16-мегапиксельный jpg в BufferedImage а достаточно было-бы анализировать 2х скан-линии (для 2х кратного уменьшение) или более сканлиний для дробного уменьшения. И хранить в памяти Код: java 1. буфер и еще небольшой кусочек для destination buffer который по сути будет одномерным массивом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 12:27 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, Я когда-то занимался масштабирование картинок без потерь, вот можешь посмотреть мой код https://bitbucket.org/makingpages/katto/wiki/Home Так же недавно делал масштабирование картинок и их кроп на сервере, и как раз озадачился тем как жрать мало памяти, если интересно могу дать в личку код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 12:34 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
GregTkвадя, Я когда-то занимался масштабирование картинок без потерь, вот можешь посмотреть мой код https://bitbucket.org/makingpages/katto/wiki/Home Так же недавно делал масштабирование картинок и их кроп на сервере, и как раз озадачился тем как жрать мало памяти, если интересно могу дать в личку код. давай, мыло в профиле, интересно поэксперементировать. есть код для аналогичного на js. (поворот, ресайз, обрезка - для full и preview) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 12:47 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, да нормальный это алгоритм для сильного уменьшения (последовательное уменьшение в 2 раза + билинейная интерполяция, учитывающая значение 4х рядом стоящих пикселей), разве что структурировать его немного . А по памяти я написал выше - в худшем случае на первом шаге расходуется до 4х раз больше, чем для оригинальной картинки, и это из-за невнимательности при переносе алгоритма с js. Код в той статье на хабре: Код: javascript 1. 2. 3. А вот в предложенном алгоритме: Код: java 1. 2. а надо step - 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 13:23 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
ivanra, да я знаю про -1, где-то в логике вычисления у меня ошибка при переносе, с этой -1 не хватает шагов для получения нужного размера. пока результат конечный верный ... позже надо поправить. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 17:24 |
|
||
|
Что может пожирать память?
|
|||
|---|---|---|---|
|
#18+
вадя, там же всё написано, надо просто повторить. Вот как должен выглядеть фрагмент кода с уменьшением картинки после удаления всего лишнего Код: java 1. 2. 3. 4. 5. 6. 7. 8. сейчас же, для каритнки 1000х1000 получается вот что 1000/60 = 16.666666... > 2 4 это означает, что на первой итерации картинка увеличивается до размера 60*2 5 =1920 (по объему памяти - почти в 4 раза), вот и расход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2015, 18:08 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38968092&tid=2125369]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 550ms |

| 0 / 0 |
