Delphi > Obecné

Hromadné spracovanie obrázkov ?

(1/3) > >>

miroB:
Máte skúsenosti s technikami: Skia, SVG, Direct2D, GDI+, ImageEn (platené), Image32 ?
Alebo prípadne iné?
Idem riešiť zhruba túto úlohu pre moje fotografie:
-   Prečítať všetky obrázky v zadanej ceste a upratať ich do databázy s týmito požiadavkami:

*    čítať exif (dátumy, čas, poloha GPS, foťák, SW verzia, rozlíšenie, natočenie, ISO a ďalšie ). Exif čítanie mám.
*    Každý súbor by bol hashovaný algoritmom BlakeX kvôli očakávaným duplikátom (duplikované súbory sa uložia len raz, ale so všetkými odkazmi) Mám hashovanie Blake2b a asi stačí..
*    Ide o zálohovanie, takže sa vytvorí zrkadlový obraz súborov, ale s novo generovanými menami GUID (očakávajú sa duplikáty. Preto sa zmenia mená, tie musia byť potlačené, lebo všetky súbory/obrázky budú v jednej knižnici). Dúfam nevadí 150 000+ súborov v jednej knižnici. Bude na nich odkazovať databáza.
*    Odkladať do DB zmenšené  a správne otočené obrázky (kópie). Zapisovanie obrázkov do Blob ovládam
*    verzia pevného rozmeru 640x480, preto potrebujem rýchle  zmenšenie a prípadne aj otočenie
ale k tomu ešte aj menší a rýchly náhľad (môžem extrahovať thumbnails). To viem.
*    vo veľkosti cca ako medium icons vo Windows Explorer. Práca s medium icons nad databázou:
*    veľmi rýchlo zobrazovať zmenšeniny, ako vo windows explorer
*    možnosť hromadného označenia, resp. výber zo zoznamu obrázkov (cca nejaký zoznam ikon)
*    rôzne druhy rýchleho sortovania ikon (budú rôzne kritériá v zmysle databázy, očakávam zoznam ikon v rozsahu 10 - 1000 položiek. Pôjde o výber, ale aj s prípadným popisom - komentárom)
*    z náhľadu medium icons rýchle prepnutie len určitého výberu na kvalitnejší náhľad v rozmere 640 x 480
*    zobraziť originál obrázku (napríklad jednotlivý obrázok o veľkosti až do 20 MB) z náhľadu s možnosťou vpísania komentára (textu)  z databázy priamo do obrázku
*    skopírovať výber do zadanej knižnice ( súbory originálov a k ním prípadne aj rozmer 640x480)
*    export jednotlivých obrázkov do iných formátov ( pdf, webp, heic, heif, alebo tlač)
*    export výberu obrázkov do jedného dokumentu predpokladám 1 až 10 položiek ( pdf alebo tlač. Asi spravím pomocou TMS.)
*    v databáze bude aj cesta k originálom (aj ku všetkým ich duplikátom)
*    Cesty a názvy súborov/fotiek budú “rozbité na atómy”. Jednotlivé výrazy/slová medzi delimitermi budú tiež priradené k obrázkom pre možnosť vyhľadávania (nejaký číselný json zoznam odkazov na položky pomocnej tabuľky)
*    grupovanie fotiek (podobný obsah, podobná poloha) Podobnú polohu (ostrovy/zhluky) už mám. Podobný obsah zatiaľ nemám..
*    Databáza bude SQLiteVýzva smerom k technikám je najmä rýchla transformácia obrázkov, rýchle zobrazovanie zmenšených verzií a prípadné iné skúsenosti z oblasti.
Napríklad zobrazovanie: bežný TImage nezobrazí fotku veľkosti 20MB dostatočne rýchlo.
Je iná technika, ktorá to zvláda za polovicu času, možno menej.
Prípadná kompatibilita s Android je tiež zaujímavá.
Napríklad ImageEn má hodne silné možnosti (rozpoznávanie tvárí a ďalšie pokročilé funkcie), ale cena od 500+ eur do 790+ (asi bez DPH) je nepríjemná.

vandrovnik:
A jak že zní konkrétní dotaz? :-)
Z vyjmenovaných věcí aktivně používám jen Direct2D.

Radek Červinka:
Image32 je klasicka knihovna, umi rychle zmensovat obrazky atd, ale bez HW podpory.

SKIA je momentalne asi TOP, za vyvojem je google, v D12 je specialni verze s podporou Vulkan API, ktera neni opensource a IMHO nic rychlejsiho asi neni (i bez Vulcan ktera je pro starsi Delphi).

SVG je graficky formát a to je uplne neco jineho.
GDI+ je dobra, ale historicka knihovna.

Direct2D je HW akcelerovane, ale dnes bych to nahradit SKIA.

Firemonkey podporuje jak Direct2D, tak GDI+, tak SKIA.

Tvuj problem je ze
a) chces pracovat s obrazky
b) chces o nich ziskavat info

miroB:

--- Citace: Radek Červinka  07-11-2024, 10:16:51 ---..
Tvuj problem je ze
a) chces pracovat s obrazky
b) chces o nich ziskavat info

--- Konce citace ---
Tvoje zhrnutie je zhruba výstižné. Ďakujem za informácie k technologickým možnostiam.
Skrytých problémov je viac:
- V prvom kole sa z obrazovej časti spraví transformácia (správne natočenie a zmenšenie). Pre správne natočenie musím čítať Exif. Windows Explorer to tiež využíva. Inak by mnohé obrázky boli dolu hlavou, alebo by ležali.
Tento prvý proces s databázou a analýzami v zásade zbehne len raz. Alebo pri nových obrázkoch, preto na čase až tak nezáleží.
- Otázky sú pre "každodenné" využívanie:
  ak chcem rýchlo prezerať zálohované súbory v plnej veľkosti:
  - OTOČENIE - asi by som ich mal už zálohovať otočené. Skôr aj origo, aj otočené.
  - VEĽKOSŤ - niektoré z obrázkov sú obrovské. Tieto by som mal možno tiež uložiť duplikovane - v pôvodnej veľkosti a v rozlíšení max 4K (to pre rýchle prezeranie na PC - asi nie je jedno, či rýchlo prezerám súbory do 3MB alebo nad 20MB). Pôvodná veľkosť sa hodí na výrezy, alias "priblíženie", takže tej sa určite nechcem zbaviť.
  Pre OTOČENIE a VEĽKOSŤ by sa mi zišli praktické poznatky, či tie časy transformácií hrajú významnú rolu. Pretože ide aj o milisekundy (zhoršenie, alebo zlepšenie na jednom obrázku). Na rozdiel od prvého načítania do databázy sa prezeranie udeje stovky krát, nie len raz.
Miesto na diskoch mám s rezervou, až bude poriadok, ešte kopu miesta ušetrím. Takže mať uložené viaceré verzie vôbec nie je problém. Ide o to, či sa také riešenie citeľne prejaví vo výkone. Samozrejme môžem robiť testy (vždy robím), ale ak má niekto skúsenosti, možno ušetrím kopu času.
Nejaká transformácia bude vždy, nebudem ortodoxne optimalizovať všetky fotky len na jednu konkrétnu obrazovku. Sám ich mám niekoľko a samozrejme tie fotky nebudem využívať jediný. To by boli rozlišovačky od 1920x1080 do 4K. To by už bolo príliš veľa záloh.
Preto záleží aj na tom, že akým komponentom zobrazujem.
Pre Delphi 10.2 Tokyo nebol bežný Load do TImage práve optimálny. Skontrolujem, ako to má D 12.2
Tu popísané problémy sú len časťou môjho bádania.

Napríklad by mi pomohol názor užívateľa ImageEn. Tam by mohli byť skryté kvality, ktoré by mi vedeli možno výrazne pomôcť.

Zhrnutie: Nie som síce na samom začiatku, mnoho už mám, ale idem sa viac rozbehnúť a nechcem chytiť nejaký horší smer.

Radek Červinka:
No já jsem něco podobného dělal ve stylu:
- mam uložené originály
- při požadavku na seznam obrazku jsem si sáhnul do cache na disku, kde jsem měl zmenšené obrázky na cca 256 pixelu v jednom směru, pokud tam nejsou v cache, tak jsem ho z originálu resiznul a ulozil do cache pro priste (resize je celkem nárocna operace)

to je tak vsechno co ti mohu poradit

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi