Autor |
Beitrag |
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Sa 28.03.09 16:18
Hallo,
ich würde gern ein PNG-Bild in Ico konvertieren. Allerdings habe ich keinen blassen Schimmer. Kann mir da vielleicht jemand helfen?
MfG
Regan
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 28.03.09 16:34
hab mal bei google "png2ico" eingebeben und kam auf das: winterdrache.de/freeware/png2ico/ eine Windows-Consolenanwendung und den Source zum selbst kompilieren - vielleicht kannst du damit was anfangen, auch wenn das sicherlich C/C++ sein wird 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 28.03.09 16:43
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Regan 
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Sa 28.03.09 17:09
Dort kann man das machen. Mich interessiert aber die Technologie dahinter  .
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 28.03.09 17:15
Unter meinem Link findet sich wie gesagt ein c++ source-code aber auch eine dokumentation dazu, beides im .tar.gz Packet, welches man per WinRAR öffnen kann. Ich hoffe, damit kommst du weiter... Normalerweise würd ich mir das aus Eigeninteresse selbst durchlesen und versuchen hinter den C++ QT zu steigen aber ich muss unbedingt diese blöden !$§%& Mathe-Prüfungen bestehen 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 28.03.09 17:31
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Sa 28.03.09 17:33
sodala:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117:
| function PNGtoIcon(const APNG : TPNGObject; ACursor : Boolean = false; AHotSpotX : Integer = 0; AHotSpotY : Integer = 0) : HICON; var Width, Height : Integer; BitmapHeader : PBitmapV5Header; hNewBitmap, hMonoBitmap : HBITMAP; Bits : Pointer; x, y : Integer; DC : HDC; IconInfo : _ICONINFO; Pixel : ^Integer; ScanLine : PRGBTriple; AlphaScanline : pByteArray; begin
Width := APNG.Width; Height := APNG.Height;
New(BitmapHeader);
BitmapHeader.bV5Size := sizeof(BITMAPV5HEADER);
BitmapHeader.bV5Width := Width; BitmapHeader.bV5Height := -Height;
BitmapHeader.bV5Planes := 1; BitmapHeader.bV5BitCount := 32;
BitmapHeader.bV5Compression := BI_BITFIELDS; BitmapHeader.bV5RedMask := $00FF0000; BitmapHeader.bV5GreenMask := $0000FF00; BitmapHeader.bV5BlueMask := $000000FF; BitmapHeader.bV5AlphaMask := $FF000000;
DC := GetDC(0); hNewBitmap := CreateDIBSection( DC, PBitmapInfo(BitmapHeader)^, DIB_RGB_COLORS, Bits, 0, 0); Dispose(BitmapHeader); ReleaseDC(0,dc); hMonoBitmap:=CreateBitmap(Width,Height,1,1,nil);
Pixel := Bits; for y := 0 to Height-1 do begin ScanLine := APNG.Scanline[y]; AlphaScanline := APNG.AlphaScanline[y]; for x := 0 to Width - 1 do begin Pixel^ := AlphaScanLine[x]; Pixel^ := Pixel^ shl 8; Inc(Pixel^, Scanline^.rgbtRed); Pixel^ := Pixel^ shl 8; Inc(Pixel^, Scanline^.rgbtGreen); Pixel^ := Pixel^ shl 8; Inc(Pixel^, Scanline^.rgbtBlue); Inc(Pixel);
Inc(ScanLine); end; end;
IconInfo.fIcon := not ACursor; if ACursor then begin IconInfo.xHotspot := AHotSpotX; IconInfo.yHotspot := AHotSpotY; end; IconInfo.hbmMask := hMonoBitmap; IconInfo.hbmColor := hNewBitmap;
Result := CreateIconIndirect(IconInfo);
DeleteObject(hNewBitmap); DeleteObject(hMonoBitmap);
end; |
Benötigte Units: PNGImage
Was der Code tut? er convertiert ein PNG in ein 32 bit Icon mit Alphakanal.
Quelle: unbekannt
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Regan 
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Sa 28.03.09 22:07
Ich schau mir das mal morgen an, bin jetzt doch etwas müde.
Vielen Dank aber trotzdem  .
|
|
Regan 
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Sa 11.04.09 21:00
So, ich habe mir das angeschaut.
1. Ich habe keine PNGImage.pas gefunden, die bei mir einigermaßen läuft, ohne, dass ich den halben Quelltext auskomentieren muss, aber egal.
elundril hat folgendes geschrieben : |
Delphi-Quelltext 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64:
| { ... } BitmapHeader.bV5AlphaMask := $FF000000;
DC := GetDC(0); hNewBitmap := CreateDIBSection( DC, PBitmapInfo(BitmapHeader)^, DIB_RGB_COLORS, Bits, 0, 0); Dispose(BitmapHeader); ReleaseDC(0,dc); hMonoBitmap:=CreateBitmap(Width,Height,1,1,nil); | |
Folgender Fehler:
Zitat: |
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt ist eine Exception der Klasse EZeroDivide mit der Meldung 'Gleitkommadivision durch Null' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
|
Edit:
Fehler besteht nicht mehr. Habe mir die aktuelle Version nochmal gezogen.
Edit2:
Fehler besteht wieder.
|
|
Regan 
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: So 12.04.09 12:53
Ich habe das jetzt mal beobachtet. Wenn ich einen OpenPictureDialog einmal geöffnet habe und mir dort einmal ein PNG-Bild in der Vorschau anzeigen lassen habe, dann funktioniert es ohne Fehler. Hab ich keine Vorschau gewählt, dann schmiert mir das Programm an eben dieser Stelle ab.
Ich wäre sehr froh, wenn mir da jemand weiterhelfen würde  .
Edit:
Fehler behoben. Funktion einfach von dort nehmen.
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: So 12.04.09 17:23
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|