Horse
тяжело представить конференцию, которая пропустит такой доклад
ну небольшой митап тоде пойдет, а вообще что плохо знаешь на то и пиши
Alexey
да, я так обычно и делаю
Alexey
было бы интересно рассказать про performance optimizations в RN
Aleksei
мне было бы реально интересно послушать про изображения, вот прям под капотом. начиная от момента как его запрашивают с сервака, до того как оно на экране появится)
Alexey
NSURLSession запрос на сервак - грузится файл - кешируется - отображается в нативном компоненте
Alexey
я такое на 20 минут не растяну (
Aleksei
так еще интересное то начинается после загрузки, как оно грузится в ram, потом в видеопамять)
Alexey
так это происходит автоматически, как в любом нативном приложении
Alexey
у разраба нет контроля над этим
Alexey
знаешь что интересно было бы
Alexey
создать компонент, который мог бы шарить вьюхи
Aleksei
на самом деле есть) у меня так было, я кароч сначала большие картинки грузил через Image и iPad вылетал по памяти, пришлось через opengl делать
Alexey
О_о
Alexey
расскажи
Alexey
окей, я не знал
Alexey
расскажите пожалуйста
Alexey
(я знаю нативку постольку поскольку, т.к. начал читать инфу только в процессе работы)
Alexey
и мои знания довольно поверхностны и не систематичны
Alexey
с удовольствием расширю их
Ilya
Ну ты можешь что угодно с ней делать, пережать, например
Aleksei
расскажите пожалуйста
да я вот сам хочу копнуть поглубже, чтобы понимать 😄
Alexey
Ну ты можешь что угодно с ней делать, пережать, например
разве это хорошая идея - пережимать изображение на мобилке?
Alexey
лучше сразу запросить правильное разрешение с сервака
Ilya
Да это не сильно ресурсоемкая задача
Alexey
это можно чисто за счёт GPU сделать?
Ilya
Ну берешь и пишешь код для гпу просто, так что, думаю, да
Horse
это можно чисто за счёт GPU сделать?
Можно если нужно, там же сворачивание матриц
Alexey
интересно, как это yoga делает
Ilya
Еще иногда одна и та же картинка в разных размерах нужна, не качать же по 10 раз
Alexey
я, честно говоря, полагал что iOS(и Android, вероятно) жмёт всё сам оптимальным способом, если задать не родной размер изображения
Horse
я, честно говоря, полагал что iOS(и Android, вероятно) жмёт всё сам оптимальным способом, если задать не родной размер изображения
не жмет, она в видео память большая и уходит, а потом масштабируется там скорее всего
Horse
но память жрет
Horse
как и в вебе собственно
Ilya
Вот только в вебе ты с этим особо ничего не сделаешь)
Ilya
Грузи по размеру
Окей, а если надо фильтр накатить на фотку?
Ilya
Тоже на сервере делать?
Ilya
У меня есть доступ к гпу и попиксельно к фотке?
Ilya
В вебе
Aleksei
ну вообще просто так для gpu не попишешь, только через апи какое то
Horse
просто так)
Aleksei
ну на шейдерах особо не разбежишься, там же про другое немного
Horse
WebGL 2.0 — Построена на основе OpenGL ES 3.0
Horse
тоже самое что в мобилках
Alexey
вот вроде бы интересная статья http://nshipster.com/image-resizing/
Ilya
тоже самое что в мобилках
> на основе > то же самое
Aleksei
мне вот другое непонятно во всем этом процессе, то есть допустим я загружаю фотку, ее надо раз куда сохранить, допусти либо в память, либо на диск, потом мне нужно ее декодировать, чтобы уже цвета пикселей в видяху загнать. то есть получается картинка и в памяти ram и в видеопамяти
Alexey
ну, я сильно сомневаюсь что ты можешь хранить изображения в видеопамяти
Aleksei
ну они туда все равно так или иначе попадут)
Aleksei
декодировать то не над вроде, там есть же апи
я так понимаю этим к примеру NSImage занимается. хотя могу ошибатся
Horse
ну, я сильно сомневаюсь что ты можешь хранить изображения в видеопамяти
хранить то можно, только чтобы получить надо ее копировать туда сюда
Aleksei
а как?)
Aleksei
чтобы декодировать
Aleksei
ну а вот интересно все же 🙂
Aleksei
я вот знаю что на ios можно картинку хранить в файловой системе, а он уже оттуда может сразу в видеопамять загонять. не помню как называется
Aleksei
ну у текстур определенный формат под видяху)
Aleksei
текстуры же получается без компрессии идут, не так как jpeg тот же?
Horse
https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesForWorkingWithTextureData/TechniquesForWorkingWithTextureData.html
Сергій
https://youtu.be/WH9AFhgwmDw
Сергій
Немного деталей процесса
Aleksei
а вот еще если с картинками хоть как то понятно, то с видюхами я вообще не понимаю как работает все)
Alexey
ну не совсем
Alexey
сейчас, если ты загружаешь, скажем, твиттер фид
Alexey
и у тебя 20 постов одного человека, то 20 раз будет создана новая аватарка
Alexey
довольно глупо создавать каждый раз новую картинку, верно?
Alexey
@nullcpp, скажи пожалуйста, есть ли в Android возможность выполнять операции в бэкграунде?
Alexey
отлично, можно рассказать про это 🙂
Alexey
отлично, погуглю
Сергій
😄
Сергій
+ HandlerThread, Loader, Thread, IntentService