![]() |
Qualität eines Icon verbessern?
Hi Leute,
ich habe ein kleines Programm geschrieben, welches aus einem Dateinamen das Icon liefert. Das funktiontiert ohne Probleme! Aber warum hat das Icon eine schlechte Qualität wenn ich es abspeicher? Zum Beispiel hat das Icon eines Word Docs nicht die Qualität des Originals! Kann man die Auflösung beeinflußen? |
Re: Qualität eines Icon verbessern?
Icons können mit mehreren Auflösunge/Farbtiefen definiert sein.
Vermutlich fragst Du nur das Icon mit einer geringen Farbtiefe/Auflösung ab (Code wäre hilfreich)? |
Re: Qualität eines Icon verbessern?
Delphi-Quellcode:
function IconFromFile(const Filename: string; IconIndex: Word = 0): HICON;
var Buffer: array[0..2 * MAX_PATH] of Char; begin StrPCopy(Buffer, Filename); Result := ExtractAssociatedIcon(hInstance, Buffer, IconIndex); end; procedure SaveAsIcon(const FileName: string; Icon: TIcon); begin if (Icon.Handle <> 0) then Icon.SaveToFile(Filename); end; |
Re: Qualität eines Icon verbessern?
Probier mal die Funktion SHGetFileInfo. Dort kannst Du angeben, welche Infos (z.B. kleines/großes Icon) Du haben willst.
|
Re: Qualität eines Icon verbessern?
Hi,
ich glaube TIcon kann nur mit Icons, die 16 Farben haben richtig umgehen. MagicAndre1981 |
Re: Qualität eines Icon verbessern?
Wie baut man SHGetFileInfo am Geschicktesten in meinen Source ein?
|
Re: Qualität eines Icon verbessern?
Moin Chris,
ich denke wenn Du hier mal nach ![]() |
Re: Qualität eines Icon verbessern?
alternativ auch so:
Delphi-Quellcode:
uses ShellApi;
procedure TForm1.FormCreate(Sender: TObject); var kleines_icon, grosses_icon : HICON; icon : TIcon; begin ExtractIconEx(Pchar(Application.Exename),0,grosses_icon,kleines_icon,1); with TIcon.Create do begin Handle := grosses_icon; SaveToFile('C:\icon_gross.ico'); Handle := kleines_icon; SaveToFile('C:\icon_klein.ico'); Free; end; end; |
Re: Qualität eines Icon verbessern?
@perle:
Guter Vorschlag, aber ich will nicht nur das Icon einer EXE, sondern von allen Dateien. |
Re: Qualität eines Icon verbessern?
Code:
wie du siehst, kannst du der Funktion als ersten Parameter nicht nur "EXEn" übergeben.
HICON ExtractIconEx(
LPCSTR lpszFile, int nIconIndex, HICON FAR * phiconLarge, HICON FAR * phiconSmall, UINT nIcons ); lpszFile Pointer to a null-terminated string specifying the name of an executable file, DLL, or icon file. EDIT : Stumpfsinn gepostet....vergiss das einfach :) |
Re: Qualität eines Icon verbessern?
Ich hab das ganze mal versucht mit SHGetFileInfo, aber da kommt genau die selbe schlechte Qualität bei raus, wie bei dem Source ganz oben.
Mit ExtractIconEx bekommt man zwar nur Exe-Icons, aber die haben eine gute Qualität! Das muss doch irgendwie auch mit anderen Icons gehen? |
Re: Qualität eines Icon verbessern?
icons von jpg dateien z.b. werden doch in der Registry definiert. Lies doch dort den pfad zum entsprechenden icon aus und kopier es dir.
EDIT : Genau das hab ich jetzt auch mal probiert und es funktioniert im Grunde auch, allerdings habe ich dann ebenfalls eine recht miese Qualität der Icons :(
Delphi-Quellcode:
uses ShellApi, RegWork, LibDirectoryU, StrUtils;
procedure TForm1.FormCreate(Sender: TObject); var big_icon, small_icon : HIcon; IconS : String; begin IconS := rw.GetFileIconString('jpg'); if pos('dll',IconS) > 0 then begin // wenn das Icon aus einer // dll geladen werden muss ExtractIconEx(PChar(copy(IconS, 0, pos(',',IconS) - 1)), StrToInt(RightStr(IconS,Length(IconS) - pos(',',IconS))), big_icon, small_icon, 1); with TIcon.Create do begin Handle := big_icon; SaveToFile(Applicationdir + 'big_icon.ico'); Handle := small_icon; SaveToFile(Applicationdir + 'small_icon.ico'); end; end; end; |
Re: Qualität eines Icon verbessern?
Wieso kann man die Qualität nicht besser machen??
Das muss doch irgendwie gehen? Die Icons aufm Desktop werden doch auch richtig dargestellt. Hat denn keiner eine Idee? |
Re: Qualität eines Icon verbessern?
Post doch mal nen Bild von so einem "schlechten" Icon.
Vielleicht werden die ja nur interpoliert dargestellt und sind in Wirklichkeit echt so hässlich?!? MFG Florian :hi: |
Re: Qualität eines Icon verbessern?
Liste der Anhänge anzeigen (Anzahl: 2)
Ja sie sind hässlich :)
hier mal die beiden Icons (groß und klein) von einem JPEG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz