IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: HTML s přístupem k obrázkům v knihovně DLL

V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
janmach
Člen
Avatar
janmach:19.7.2021 13:14

Vše se odehrává na lokálním disku.

1. Windows 10, Office 13, Excel, UserForm s vloženým prvkem WebBrowser (to je simulace IE 7), jemuž předám HTML. Mám knihovnu DLL s mými obrázky a texty, ve zdrojovém souboru .RC je např.

0 GIF "pic0.gif"
1 GIF "pic1.gif"
2 GIF "pic2.gif"
... atd ...

V HTML jsou (na správných místech) tagy

<BASE href='res://D­:\cestaknihov­na.dll/GIF/#'>

... <IMG src=2> ... <IMG src=7> ...

V poho, funguje, WebBrowser vykreslí kýžené obrázky.

2. V MS Edge otevřu soubor jmeno.html, v němž je opět

<BASE href='res://D­:\cestaknihov­na.dll/GIF/#'>

... <IMG src=2> ... <IMG src=7> ...

a místo obrázků se nakreslí standardní ikona, kterou nazývám Obrázek nenalezen, vole. Nepomůže ani, když zpětná lomítka v cestě ke knihovně nahradím dopřednými, jež má Edge radši.

Dotaz: Jakou syntaxi použít, aby Edge našel a vykreslil obrázky z DLL?


Drobný dotaz, s předchozím nesouvisející. V HTML je tag <LINK href=B/Fav.ico rel='shortcut icon'> (obrázky zatím mám v podsložce B). Až do poslední (Microsoftem vynucené) aktualizace se ikona vykreslovala, od aktualizace link nefunguje. Co s tím, tohle přece musí fungovat?

Zkusil jsem: Zkoušel jsem v <BASE ...> místo /GIF/ napsat /300/ , což v IE7 funguje stejně - v MS Edge nefunguje.
Zkoušel jsem v <BASE ...> nepsat závěrečný # , což v IE7 funguje stejně - v MS Edge nefunguje.
Zkoušel jsem (i když je to hnus) ve všech <IMG src=...> vypsat celou cestu z <BASE ...> a tag <BASE ...> zrušit; v cestě jsem rovněž zkoušel /300/ i vynechaný # - v MS Edge nefunguje.
Zkoušel jsem nahradit obrázky GIF obrázky ve formátu BMP, který mají DLL radši - v MS Edge nefunguje, nehledě na to, že obrázky BMP jsou tlustoprdi.

Malé obrázky by šly zakódovat do base64 a mohly by být přímo v HTML, ale to by bylo nepřehledné a nečitelné zoufalství. Navíc potřebuji docela dost velkých obrázků, které v base64 nepřipadají v úvahu.

Chci docílit: Píšu v HTML příručku VBA (Visual Basic for Applications) pro kamaráda. Ono HTML nikdy nebude na webu, bude u něj na lokálním počítači. Je to psáno výlučně pro MS Edge, protože z HTML5 používám skoro všechno, co Edge akceptuje. Internet Explorer toho umí o dost míň a jiný prohlížeč kamarád ani já nemáme.
Nechci kamarádovi dávat kromě souboru PříručkaVBA.html ještě skoro stovku souborů (obrázků). Správné je dát mu dva soubory, totiž PříručkaVBA.html a PříručkaVBA.dll .

Když IE7 umí pro HTML soubor číst obrázky (GIF), musí na to jít ukecat i MS Edge.

 
Odpovědět
19.7.2021 13:14
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20.7.2021 10:45

DLL jsem nikdy nepouzival a ani bych nespolehal na to, ze to browsery podporuji. Mozna najit nejaky JS ktery to umi otevrit a vycucat z nej obrazky. Nebo bych sel do Zipu.
Base 64 koduje soubor z 8 bitoveho kodovani na 6 bitove. cili, narust velikosti by mel byt 8/6, coz je (8/6 * 4/4 * 4/4 = 132/~100 = ) 1.32, 30% narust.

 
Nahoru Odpovědět
20.7.2021 10:45
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20.7.2021 10:48

Jo, a favicon nekdy prohlizece zobrazuji se zpozdenim.Maji nakesovanou starou verzi. Zkus soubor zkopirovat do index2.html, treba to pak zobrazi.

 
Nahoru Odpovědět
20.7.2021 10:48
Avatar
janmach
Člen
Avatar
janmach:24.7.2021 11:24

Dík za odpovědi.

Co se DLL týče, uměl z ní obrázky číst HTML předhozený Internet Exploreru 7, tak to snad nějak musí umět i MS Edge poslední verze. Ale s jakou syntaxí?

Klidně bych DLL nahradil souborem ZIP, jenže jsem nikde nenašel, jak v HTML načíst obrázek ze zipu. Zkoušel jsem

<IMG src=Obrázky.zip#Obrázek.gif>
<IMG src=file://Obrázky.zip#Obrázek.gif>
<IMG src=zip://Obrázky.zip#Obrázek.gif>

Zkoušel jsem i zadat celou cestu

<IMG src='D:/celá cesta k příručce/Obrázky.zip#Obrázek.gif'>
<IMG src='file://D:/celá cesta k příručce/Obrázky.zip#Obrázek.gif'>
<IMG src='zip://D:/celá cesta k příručce/Obrázky.zip#Obrázek.gif'>

To je ovšem zoufalé střílení naslepo a nefunguje to.

Když píšeš o zipu - umíš mi poradit, jak ho použít v HTML5 (nikoli v PHP!) a/nebo v jemu odpovídajícím javascriptu krátkým a hlavně rychlým prográmkem? V MS Edge otvírám jeden jediný HTML soubor (zvíci 1,16 MB) s téměř stovkou obrázků; dosavadní načítání s obrázky coby samostatnými soubory trvá pouhé 2 - 3 vteřiny.

Co se base64 týče, pro velké obrázky (těch mám asi 30) je to prakticky nepoužitelné - dlouhatááánský string do žádného textového editoru nevložím, takže base64-stringy by v html souboru musely být jako stringy, javaskriptem sestavené z dílčích kusů a skriptem vkládané do atributů src jednotlivých <IMG>. Navíc je to neohrabané i pro malé obrázky - při sebemenší změně v obrázku bych ho musel znovu překládat do base64 a znovu (pro velké obrázky po částech) vkládat do html souboru.

Co se favourite icon týče, jde vyloženě o hrubou chybu Microsoftu, když to do poslední jejich aktualizace fungovalo. MS Edge načetl soubor html, provedl startovní skript a poté zobrazil na pacce karty ikonu. Teď na ikonu kašle a nezobrazí ji ani po desítkách minut. Přinutit majitele a vedení Microsoftu k opravě chyby by dokázal jen malý dvorek a velký bič :-) , ale neznám nikoho v USA, kdo by se toho ujal :-( .

Jen připomínám, že vše je na lokálním disku, nepotřebuji přístup k internetu, je to určeno pro jediného uživatele a pro spouštění výlučně v MS Edge. Chtěl bych mít jediný textový soubor html a místo složky se spoustou obrázků mít jediný obrázkový soubor. Jsem prostě ze staré školy a nemám rád aplikace či dokumenty, vyžadující desítky a desítky souborů.

 
Nahoru Odpovědět
24.7.2021 11:24
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:25.7.2021 10:41

google = javascript open image from zip
google = javascript open image from dll
google = javascript open image from svg

 
Nahoru Odpovědět
25.7.2021 10:41
Avatar
janmach
Člen
Avatar
janmach:25.7.2021 20:34

Moc Ti děkuji za snahu mi pomoci, ale tohle všechno mám za sebou. Na webu se najde tisíc odkazů, jak do html stránky dostat obrázky (třeba GIFy) z DLL. Ve všech je (hůře či lépe, zoufale kostrbatě či jednodušeji) uvedeno jednoduchoučké schéma s cestou k DLL v <BASE> a s pouhými čísly obrázků v tazích <IMG>:

<HEAD>
<BASE href='res://D:\cesta k mojí knihovně.dll/GIF/#'>
</HEAD>

<BODY>
<IMG src=2>
<IMG src=7>
</BODY>

a to je právě to, co v MS Edge nefunguje.

Pro čtení obrázků javascriptem ze ZIP se zase všude používá knihovna-monstrum jszip z webu, neboli pro prohlížení stránky je nutné připojení k síti, a kamarád bude příručku používat bez možnosti přistoupit k webu (v práci má kromě pošty a podobných věcí web zakázaný).
Navíc, nakolik jsem se ve webových ukázkách skriptů orientoval, to, co skript dostane ze zipu, dál zpracovává značně komplikovaně.

Právě to jsou důvody, proč si s tím nevím rady, ač pořád hledám, jestli by se někde nenašlo něco (mj. krátké a jednoduché), co funguje. Už jsem si jist, že nikoli. Existuje-li jednoduché řešení pro MS Edge, nesmím ho už hledat, musím hledat něco úplně jiného, abych na ono řešení náhodně narazil. :-)

Tak Ti ještě jednou děkuji za pomoc

 
Nahoru Odpovědět
25.7.2021 20:34
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:26.7.2021 10:45

Aha. Takze, takhle to s tebou je...

<img src="https://www.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_84x28dp.png">
Kdyz si tu adresu das do prohlizece, tak ti zobrazi obrazek.
Kdyz si pak kliknes na menu Soubor > Ulozit jako, tak ti obrazek ulozi na disk.
Takze mas 2 moznosti:
1. <img src="https://www.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_84x28dp.png">
2. <img src="img/googlelogo_color_84x28dp.png"> ulozeno na disku v adresari meho webu

Totez funguje pro javascript.
<script src="ciziweb/jszip.min.js"></script> opet, adresu das do prohlizece a soubor ulozis
<script src="mujweb/jszip.min.js"></script>
Editováno 26.7.2021 10:46
 
Nahoru Odpovědět
26.7.2021 10:45
Avatar
janmach
Člen
Avatar
janmach:26.7.2021 17:42

Děkuji, ale tohle také vím. Soubor jszip.min.js je psaný jako jeden dlouhatánský řádek (Rus by řekl car-řádek) a je obrovský, protože krom toho, co potřebuji, umí spoustu dalších věcí. Je otázkou, zda je lepší mít v podsložce s html souborem ke stovce obrázků, nebo jeden (velký) ZIP a zbytečně velikou knihovnu JS, která jen supluje práci programu zip.exe, vrací mi obrázek v podobě binárního stringu, jenž bych buď musel ukládat na disk a číst z disku, nebo suplovat práci konvertoru do base64.

Já jsem prostě ze staré školy a chci mít všechno (krom jistých částí svého těla :-) ) co nejmenší, kompaktní a programátorsky průzračné. Když jsem se mnoho let živil programováním v nejrůznějších jazycích, také jsem často použil nějakou cizí knihovnu, ale vždycky jsem z ní poté vyházel všechno zbytečné a to, co jsem potřeboval, se mi obvykle podařilo přepsat do o dost lepšího a rychlejšího kódu. Kdysi se např. pro třídění velkých databází používal algoritmus zvaný QuickSort. Dostal jsem jeho zdroják v Pascalu, což mi pro pascalské programy teoreticky stačilo, ale stejně jsem věnoval týden tomu, abych pochopil, jak přesně funguje, celý ho přepsal do assembleru (tím se nejen zrychlil, ale též významně zkrátil) a toto pak linkoval do Pascalu.
Dnes se programuje úplně jinak, programy používají spousty obrovských knihoven, ač z každé z nich potřebují jen jednu či dvě funkce. Zaplácá to disk, zaplácá to operační paměť a program se plouží. Jen výrobci hardwaru si mnou ruce, protože uživatelé jsou takto nevybíravě tlačeni ke kupování větších a větších disků, větších a větších pamětí a rychlejších a rychlejších procesorů. Před pár lety jsem to zkritizoval epigramem:
Program žádá větší výkon hardwaru?
Potom patří jednoznačně do sběru.

Nic, promiň, že jsem se rozkecal. Když neexistuje nic jednoduchého a krátkého, smířím se se spoustou obrázků v podsložce souboru html.

 
Nahoru Odpovědět
26.7.2021 17:42
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27.7.2021 12:09

Jako, ty chces neco, co ten prohlizec neumi, ale nekdo na to udelal js, ktery to umi a ten tam nechces pouzit. :)
Tak to nahrej do slozky, obrazky a nacitej si to javascriptem nebo primo do img tagu.
Vic ti asi neporadim, neresil jsem to. Snad ti poradi nekdo jiny.

Mimochodem, quicksort je jen jednim z algoritmu. Jestli si vzpomenes na insert-sort, tak tam se porovnava se serazenym polem zhora. Kdyz to upravis a bude porovnavat s prostredkem, postupne eliminujes pole casto mnohem rychleji. Vysledek je, ze pocet tahu je asi o 15% mensi nez quicksort. Nevyhodou je, ze vkladas doprostred pole na ucritou pozici, takze zbytek serazeneho pole musis odsunout. Coz je operace na prd, kdyz se jedna o obrovske pole.
A pak je tu algoritmus, ktery je tez podobny merge-sort. Nejlepe by ho vystihl pojem slevani. Funguje tak, ze veme 1 a 1 a vytvori usporadanou dvojici. Totez pro ostatni. A pak sleva dvojice do ctveric. Atd. Opet je tam nejakych 5% proti q-sort. Nevyhoda je, ze je dobre pouzit dvojnasob pameti. Prelevas z leva doprava a pak prhodis pointry poli a delas to znova. Kdyz velke hodnoty v poli, muzes to resit zapisem ineteger-indexu na puvodni. Pak to sezere jen dvojnasobek pameti pro indexy. Ale, principialne je to hrozne jednoduchy algoritmus na pochopeni.
Na tomhle jsem treba pracoval ja v dobe, kdy se objevil q-sort, ale nebyl jsem jeste schopny ten algoritmus poskladat. Krasne mi fungoval, ale spatne jsem tam mel start-end pozice, protoze jsem pouzil jinou verzi. Ja jsem to totiz resil tak, ze jsem si rekl, cele pole obsahuje seznam serazenych poli. Treba zjistit jejich start-end a slit je postupne jedno a jedno do jednoho. Ale, ukazalo se, pri testech, ze druha myslenka, zacit jednojici a jednojici a slit ji do dvojice, je praktictejsi, lepe se pise a neni treba si ukladat indexy a je o par kroku lepsi pro nahodny soubor.
Mimochodem, vetsina alg. q-sort selhava, kdyz mas pole serazene DESC, zhora dolu. Algoritmus prechazi na bubble sort, porovnej temer kazdy s kazdym.

"Program žádá větší výkon hardwaru? Potom patří jednoznačně do sběru."
Fajn, ale praxe ukazuje, ze zakaznik si vybira program podle toho, co mu nabulikuje manazer, co mu nabulikuje propagace na webu, v letaku a podle toho, jak vypada :)

 
Nahoru Odpovědět
27.7.2021 12:09
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27.7.2021 12:25

https://github.com/…jszip.min.js
Jo, je to 100k, protoze je to cross browser a dokaze to pracovat se soubory ruznym zpusobem, take v ruznych prohlizecich.
Jednoradkove nudlicce se rika minifikace. Je to programem predelane na nudlicku, eliminovane komenty a prejmenovane nazvy promenych na jednopismenkove.

Pokud mas radeji kousicky kodu, ikdyz se nechystas do toho vrtat, tak je tam LIB
https://github.com/…e/master/lib
Bohuzel, zklamani je, ze tam nemaji cely kod bez minifikace. To meli mit tady. Jao, jsou js-parsery, co ti to predelaji na kod, ale stale se nezbavis jednopismenkovych nazvu promenych. Bud je to zamer nebo pochybeni autora.
https://github.com/…ist/jszip.js

Jako, prislo mi lepsi, pouzit zip nez pokouset dll, ktere, kdo vi, jakou ma podporu. Navic, vetsina lidi ma chrome v pc. Edge pouziva chrome jadro. Mozna proto neumi to dll.

 
Nahoru Odpovědět
27.7.2021 12:25
Avatar
janmach
Člen
Avatar
janmach:27.7.2021 20:40

Máš samozřejmě pravdu. Jen jsem marně doufal, že existuje něco kratičké a průzračné. Zjevně nikoli.

Já jsem opravdu ze staré školy, ba přímo z programátorského starověku, jehož filozofie programování je dnes už jen těžko pochopitelná, takže pro dnešek jsem beznadějný případ. To máš totéž, jako kdyby se dnes objevil středověký rytíř a zjistil, že za uplynulá staletí byl pojem rytířství redukován (aspoň podle filmů z produkce USA) na obrněnce, mlátící se navzájem sekerami. (A hlavně se kolem těch obrněnců musí motat dlouhovlasá blondýna s implantáty v ňadrech, která chodí jen v kožených kraťasech a podprsence, ačkoli ostatní jsou teple oblečeni, a na potkání kope lidi do hlavy. :-) )

O QuickSortu jsem se zmínil, jen abych dokumentoval, že mi hotové produkty nikdy nevyhovovaly, dokud jsem je neminimalizoval. Tehdy pro osobní počítače ani nebyl jiný pořádný třídič k mání. Až když jsem se přestal živit programováním, začaly se objevovat další algoritmy překlápěné ze sálových počítačů na PC, jak se zvyšovala schopnost PC zvládat jejich vysoké procesorové a paměťové nároky. Pak jsem třídění potřeboval už jen výjimečně a jen pro tak malé databáze, že to i kratičký a průzračný BubbleSort zvládá za zlomek vteřiny.

A největší pravdu máš v tom, že uživatelé komerčních aplikací mají mozky vymyté agresivními a arogantními reklamami, které jsou ochotné nalhat cokoli, aby se šunt prodal. (Mimochodem - lhát pro prachy je typickým znakem psychopatů; jde o tzv. psychopaty v bílých límečcích, na rozdíl od mnohem méně nebezpečných psychopatů - sériových vrahů.)

 
Nahoru Odpovědět
27.7.2021 20:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.