Konverze png do dll

Převod souboru PNG do DLL

Zabalte PNG jako Windows resource DLL nebo nahraďte kompatibilní icon a bitmap resource.

Převádějte soubory PNG online

Pro převod PNG do DLL zatím vlastní online konvertor nemáme, ale soubory PNG můžete online převést do těchto a dalších formátů:

Jak převést soubor png do formátu dll

Program pro Windows může vyžadovat obrázek zabalený uvnitř DLL jako resource, případně může být nutné nahradit ikonu nebo bitmapu existující knihovny DLL. Nejde o běžnou konverzi obrazového formátu: PNG musí být vložen do nově sestavené resource DLL nebo převeden na resource type očekávaný hostitelskou aplikací.

Co je formát PNG

PNG (Portable Network Graphics) je rastrový formát používaný webovými prohlížeči, nástroji pro pořizování screenshotů, designovými aplikacemi, jako jsou Adobe Photoshop a GIMP, a softwarem, který ukládá grafiku uživatelského rozhraní. Používá bezztrátovou kompresi a podporuje průhlednost prostřednictvím alpha channel, takže se hodí pro screenshoty, loga, ikony a obrázky uživatelského rozhraní.

Co je formát DLL

DLL znamená Dynamic-Link Library. DLL je soubor Windows Portable Executable, který může obsahovat spustitelný kód, exported functions a resources, například ikony, dialogy, řetězce, manifesty nebo raw data. Programy načítají DLL za běhu, aby sdílely funkcionalitu nebo získaly zabalené assets.

DLL není obrazový formát. PNG vložený do DLL zůstává daty PNG; nestává se z něj spustitelný kód. Přijímající program musí znát resource type a identifier, případně musí DLL implementovat exported functions a calling convention, které program očekává.

Jak zabalit PNG do nové DLL

Sestavení resource-only DLL

Nainstalujte Microsoft Visual Studio Build Tools nebo Windows SDK a poté otevřete Developer Command Prompt for Visual Studio. Vložte PNG a resource script s názvem resources.rc do stejného adresáře:

101 RCDATA "image.png"

RCDATA ukládá původní bajty PNG bez dekódování nebo opětovné komprese. Zkompilujte a slinkujte resource:

rc /fo resources.res resources.rc
link /dll /noentry /out:images.dll resources.res

Výsledný soubor images.dll je resource-only DLL bez exported functions. Kompatibilní aplikace musí získat resource ID 101 pomocí Win32 functions, jako jsou FindResource, LoadResource, LockResource a SizeofResource, a poté dekódovat bajty pomocí knihovny podporující PNG, například Windows Imaging Component (WIC).

Sestavení standardních resources pro ikony nebo bitmapy

Tuto metodu použijte pouze tehdy, když cílová aplikace očekává standardní Windows resource namísto libovolných dat PNG. Převeďte obrázek pomocí ImageMagick:

magick image.png image.ico
magick image.png image.bmp

Soubor ICO může obsahovat několik velikostí ikon a barevných hloubek. Resource BMP obecně nezachovává průhlednost PNG tak spolehlivě a konverze může zvětšit velikost souboru. V souboru resources.rc deklarujte požadované resource types:

101 ICON "image.ico"
102 BITMAP "image.bmp"

Resource DLL zkompilujte pomocí:

rc /fo resources.res resources.rc
link /dll /noentry /out:images.dll resources.res

Aplikace hledající resource typu ICON automaticky nepoužije resource typu RCDATA obsahující PNG. Resource identifiers, resource types a případné očekávané naming conventions se musí shodovat s hostitelským programem.

Nahrazení obrázku v existující DLL

Pokud DLL již obsahuje požadovaný programový kód a strukturu resources, použijte Resource Hacker k nahrazení existující ikony, bitmapy nebo kompatibilního resource s raw daty. Otevřete kopii DLL, vyberte příslušný resource, zvolte Action → Replace Icon nebo Action → Replace Bitmap, poskytněte kompatibilní soubor .ico nebo .bmp a uložte jej pod novým názvem. Nahrazení libovolných dat PNG vyžaduje nalezení správného resource typu RCDATA a zachování identifier a očekávaného formátu; příkaz pro nahrazení ikony nedokáže automaticky převést každý PNG resource.

Online a desktopové nástroje

Online služby, jako jsou CloudConvert nebo Convertio, mohou převést PNG na ICO, pokud je skutečným požadavkem soubor s ikonou, ale nedokážou zjistit resource identifiers DLL, její exported interface, architecture nebo ABI. K vytvoření DLL použijte Visual Studio Build Tools nebo Windows SDK, k přípravě souborů ICO či BMP ImageMagick a k úpravě kompatibilních existujících resources Resource Hacker. Proprietární obrázky nebo DLL neodesílejte do online služeb.

Omezení kompatibility a kvality

  • Neexistuje univerzální konverze PNG na DLL. Cíl může vyžadovat konkrétní resource type, identifier, exported name, calling convention, Windows architecture nebo verzi DLL.
  • 32bitová DLL se musí načíst do 32bitového procesu a 64bitová DLL do 64bitového procesu. Windows nedokáže načíst DLL se špatnou architecture do již existujícího procesu.
  • Uložení PNG jako RCDATA zachovává původní bezztrátovou kompresi a alpha channel, ale aplikace jej musí dekódovat. Převod na BMP může odstranit nebo změnit průhlednost a může vytvořit větší soubor.
  • Úprava podepsané nebo chráněné DLL zneplatní její digital signature a může narušit checksums, version checks, instalátory, aktualizace nebo načítání aplikace. Uchovávejte původní záložní kopii a software třetích stran upravujte pouze tehdy, pokud to umožňuje jeho licence.

PNG vs DLL: srovnání formátů

Jak si formáty PNG a DLL stojí v nejdůležitějších vlastnostech pro tento převod.

Srovnání souborových formátů PNG a DLL
Vlastnost .PNG Portable Network Graphics .DLL Dynamic-Link Library
Komprese Bezeztrátový Bez komprese
Průhlednost Ano —
Animace Ne Ne
Vrstvy Ne Ne
Barevná hloubka True color s alfa (32bit) —
Podpora metadat Rozsáhlé Základní
Otevírá se ve webovém prohlížeči Ano, nativně Ne
Typická velikost souboru Malé Střední
Otevřený standard Ano Ne
Nejvhodnější pro Webové publikování Vkládání do aplikací
Zavedeno 1996 1993
Vývojář PNG Development Group Microsoft
MIME typ image/png —

Často kladené otázky

Lze přímo převést PNG na DLL?

Ne, změnou přípony PNG na .dll nevznikne použitelná Windows DLL. Obrázek musí být zabalen jako Windows resource DLL nebo použit k nahrazení kompatibilního obrazového prostředku v existující knihovně.

Zachová se v resource DLL průhlednost a kvalita PNG?

Mohou se zachovat, pokud je PNG uloženo jako PNG resource, ale mohou se změnit, pokud cílový resource očekává bitmapu nebo ikonu. V takovém případě závisí průhlednost, práce s barvami a kvalita obrázku na formátu resource a rozlišení zdroje.

Bude DLL založená na PNG stále upravitelná jako obrázek?

Ne, výsledkem je knihovna Windows obsahující resource, nikoli běžný upravitelný obrazový soubor. Obrázek může být později extrahovatelný, ale obecně jej nelze převést zpět na původní PNG se zárukou zachování všech metadat a podrobností zabalení.

Proč aplikace po vložení PNG do DLL nezobrazí obrázek?

Aplikace může hledat konkrétní typ resource ikony nebo bitmapy, identifikátor, velikost či barevný formát namísto libovolného PNG resource. Nahrazení resource může také selhat, pokud struktura knihovny nebo očekávané rozměry resource neodpovídají.