Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Image resizing - AWS Lambda #1

Open
17 of 22 tasks
jelen07 opened this issue May 7, 2019 · 0 comments
Open
17 of 22 tasks

Image resizing - AWS Lambda #1

jelen07 opened this issue May 7, 2019 · 0 comments

Comments

@jelen07
Copy link
Contributor

jelen07 commented May 7, 2019

Inspirace

Todos

  • 🆕 Update Lambda to work on Node 8.1, Node.js 6.10 will soon be EOL
  • Upravit lambda funkci aby zachovávala formát dle pf:1 parametru dle obrázku (dlé přípony?)
  • V případě jakékoliv chyby aby vrcela info o chybě a ne {"message": "Internal server error"}
  • Vracela noimage v případě, že originál neexistuje
  • Ověrovat pixel density jen když je nastaveno přes Environment variables + napojit do ModifierFactory (aktuálně je to tam duplicitně)
  • Ověřovat resolutions jen když je nastaveno přes Environment variables
  • Metoda modifier.getOriginalUri() je primitivní string replace, otázkou jestli by se spíše neměla skládat
  • Rozdělit alespoň do 2 souborů?
  • Dopočitávát druhý rozměr, pokud je zadaný jen jeden
  • V případě že je zadaný jen jeden rozměr, ověřovat width resp height z povolených resolutions. Dívá se jen na zadaný rozměr, ne kombinaci width x height
  • getParsedValue() nevim jestli je uplně šťastné
  • Command který promaže všechny resiznuté obrzky - ponechá jen originály. Může brát v potaz ještě parametr path, ať se dají smazat jen konkrétní "zmenšeniny". Ideálně to udělat interaktivní: Do you want to delete 101 images in files-stage.sexr.cz/flag/* path?
  • Přidat podporu "debug" modu. Když ručně přidám do url nějaký parametr, např. debug=1, nevygeneruje se náhled, ale vypíšou se detailní informace o stavu - požadované rozlišení, realné, povolené rozlišení, url ap. Zkrátka co nejvíce informací. možnost volat i bez obrázku. Globalně by se to mělo dat vypnout v lambdě.
  • Generovat thumby s offsetem (uživatel si definuje posun per obrázek v jedné ose a udělá se čtvercový thumb)
  • 🆕 Snížení kvality při ukládání obrázku tak, aby byl nejlepší pomer kvalita/velikost https://github.com/imagemin/imagemin
  • Vyhodit quality do ENVu
  • Deploy lambdy
  • Rozsekání do repositářů
  • Dokumentace
  • Článek (PR)

Požadavky na Lambdu

  • Generování thumbů on the fly
  • Vygeneruje náhled o potřebných rozměrech (320x640, 90x90, ...)
  • Umí vygenerovat náhled s offsetem (je-li nastaven)
  • Mazat soubory na které se nešáhlo, např. víc jak 1 rok (požadavek spíše na S3)

Požadavky na aplikaci

  • Upload obrázků na S3
  • Manipulace s uživatelskými obrázky (otočit doleva|doprava|horizontálně|vertikálně)
  • Po jakékoliv manipulaci s obrázkem by mělo dojít k odstranění všech miniatur daného obrázku
  • Odstranit
  • Nastavit jako avatar (hlavní)
  • Nastavit cover (vedlejší)
  • Vegenerovat URL obrázku bez použítí AWS S3 service
  • Podpora pixel density [1, 2, 3, 4], desetiny budeme zaokrouhlovat nahoru 1.5 => 2 a budeme jí řešit pomocí img atributu srcset s dp parametrem viz link
  • Makro pro generování obrázku v potřebném rozměru n:img="$poi->getAvatar()->getSource(), imageManager". Pro upřesnění - ještě u elementu img exituje atribut sizes, ten byl ale prozatím přeskočil, později by mohl být jako další parametr v onom makru. Atribut srcset je vesměs jasný, zatím co sizes bude záležet na konkrétním use case, jestli se nepletu. Toto si doplníme. smashingmagazine, vzhurudolu

Otázkou je, jestli se držet aliasů nebo rozměrů. Tak či tak musí jít a fyzické soubory. Např. pixel density nelze předat jako GET parametr, ale musí být v URL.

Měla by být zachovaná adr. struktura jako doposud (snad to půjde v rámci lambdy), tj.:

  • <bucket>/poiDocument/<id>/<original|size>/<filename> a
  • <bucket>/<what>/<original|size>/<filename> pro statické obrázky (vlajky, noimage ap.)

Čili URL pak můžou být v jednom ze tvarů:

  1. <bucket_url>/poiDocument/<id>/avatar/<filename>, pro pd pak avatar_2, avatar_3 a avatar_4
  2. <bucket_url>/poiDocument/<id>/90x90/<filename>, pro pd pak 90x90_2, 90x90_3 a 90x90_4 A NEBO 180x180, 270x270 a 360x360

Pros

  • Obrázky máme mimo aplikaci, později by se mohl upravit i upload ať to nejede přes PHP, ale rovnou na S3
  • "On the fly" generování obrázků
  • Nemělo by se šahat na AWS S3 službu při vykreslování HTML tagu pro obrázky (v PHP)

Cons

  • Fully dependent on AWS
@jelen07 jelen07 changed the title Original assignment (moved from GL) Image resizing - AWS Lambda Feb 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant