![]() |
AW: AnimatePNG
Zitat:
gruss |
AW: AnimatePNG
Ich hatte jetzt auf Windows 7 Starter folgendes: Deine Anwendung gestartet. Archiv einfach entpackt, Imageverzeichnis leer. Dann deine Fehlermeldung, die ich aber nicht lesen konnte, weil die Absturzmeldung von Windows drüber lag. Alle Benachrichtigungen mit 'OK' Bestätigt und dein Programm war weg.
|
AW: AnimatePNG
@Delphi-Laie
Habe es auf XP getestet und nein es lief nicht. Dort gab es einen Fehler mit der GDI+ also D2009 gestartet und Problem behoben. Bei mir lief es jetzt ohne meckern inklusive Font der zur Laufzeit erstellt wird. Wenn du möchtest kannst du es gerne nochmal testen. Bedingt durch D2009 sind die Dateien jetzt um 100KB kleiner ;) Nur die beiden Dateien ersetzen. gruss |
AW: AnimatePNG
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Leider läuft es immer noch nicht. Ich muß mich durch einen Wust an Fehlermeldungen klicken - teilweise die im typischen Windows-Design (bis XP), teilweise auch in einem anderen Stil. Doch eine Fehlermeldung kann ich jetzt abtippen: "Exception Exception in Modul SK_Aero.dell bei 0004F4A7". Doch es gibt auch Bildschirmkopien, deshalb schau selbst im Anhang! Wiederum startete ich das Programm in der Verzeichnisstruktur, die in Deinem Archiv schon vorgegeben war, ich extrahierte diese komplett und startete es im Verzeichnis "bin". Gruß Delphi-Laie Edit: Volltreffer, Du meintest die beiden Dateien in Deinem Beitrag zuvor. Nun auch heruntergeladen, die beiden schon vorhandenen Binärdateien damit ersetzt. Jetzt kommt es nur noch zu einer Fehlermeldung "An error has occured, No image folder added or no image added. The application is now closed." Einmal drauf geklickt, und aus der Traum, Programmende. |
AW: AnimatePNG
Zitat:
Du hast keine Gif Dateien im Images Folder. ![]() Packe es in dem Folder Images dann sollte es laufen. Ich habe das Programm noch nie unter XP gestartet nach dem korrigieren des Fehlers mit GDI+ lief es anstandslos. Ich kann aber nachher nochmal gegenprüfen warum da Fehler auftauchen wenn dieser Dialog erscheint. gruss |
AW: AnimatePNG
Pack doch mal in de Folder ein Beispiel Gif.
|
AW: AnimatePNG
Zitat:
gruss |
AW: AnimatePNG
Zitat:
Zitat:
|
AW: AnimatePNG
Zitat:
Denke das ich hier dann ein Problem mit SetLength habe werde das nochmal gegenprüfen. Ich habe dort 35 Gif's drin und nicht nur mit einer getestet. 141 MB gesamt. Zitat:
Zitat:
|
AW: AnimatePNG
Ich meine, ich weiß nicht, wo ich so schnell eine passende Gif-Datei herbekommen soll.
|
AW: AnimatePNG
Zitat:
Eine gute Ressource für Bilder zu finden ist dieser Suchpfad. Datei auswählen im neuen Fenster öffnen dann speichern unter nach dem die Fortschrittbalken der Gif Datei aus sind. gruss |
AW: AnimatePNG
So, noch etwas außer der Reihe. Das Programm kann zaubern: Es erzeugt im Windows-Taskmanager zwar und natürlich einen Eintrag unter "Prozesse", nicht jedoch unter "Anwendungen". Dabei hat es doch ein sichtbares Formular?! Solch ein Phänomen hatte ich noch nie.
|
AW: AnimatePNG
Zitat:
Das setzt sich nicht in den Taskmanager "Anwendungen" dafür benötigt man einen anderen Window Style. gruss |
AW: AnimatePNG
Danke, wieder etwas dazugelernt!
|
AW: AnimatePNG
Zitat:
Das ist nun mal so bei geskinten (Rahmenlosen) Fenstern. gruss |
AW: AnimatePNG
Ok vorerst mal die letzte komme sonst mit dem APNG Projekt durcheinander.
XP keinen Images Folder addiert getestet Anwendung startet mit dem Dialog kein Absturz nichts. Folder hinzugefügt 1 Bild addiert keine Problem Bild wird geladen und abgespielt. Mehrere Bilder addiert auch keine Probleme. Mehr kann ich im Moment nicht machen. gruss |
AW: AnimatePNG
Hmm..
Zitat:
Sorry, aber dann ist deine DLL schrot.. Ich kann unter Delphi 6 JEDE 32Bit-DLL von MS oder wem auch immer einbinden und verwenden. Egal, ob diese mit C++ D2010 DXE oder mit was auch immer kompiliert wurde, solange die Header nur kompatible sind. Da es sich um eine Delphi DLL sollte das von Haus aus so sein! Dein SKAERO_INIT - Aufruf mit Laden scheint ja zu funktionieren, somit sollte D6 und diese DLL kein Problem haben, nur die DLL scheint nicht OK zu sein. Da es, soweit ich gesehen habe, niemand geschaft hat dein Programm bei sich zu testen, da es direkt mit Exceptions um sich wirft. Und es hier egal ist, welches Delphi eingesetzt wird, da diese direkt die exe gestartet haben, sollte es wohl nicht an D6 liegen! So, D6 ist nicht UNICODE oder hat auch keine Generics, jedoch habe ich in den letzten Jahren gelernt, dass ich mit D6 immer noch alles machen kann, was auch mit XE10 (in der Basis-Professional Version ohne Mobile) zu machen ist. Egal... Darüber zu diskutieren ist hier falsch.. Versuche mal selber deine App auf einem 'anderen' System, wie deinem Entwicklersystem zu benutzen und melde dann zurück, wie viele Exceptions du dort bekommen hast... Ich bin hier raus.. |
AW: AnimatePNG
Du must jetzt nicht komisch kommen sorry nur weil ich deine schrottige TGif Komponente nicht verwende. (Mit deinen worten)
Zitat:
EDIT: Alles hat seine vorgaben. Letztendlich kann nichts dafür das hier einige Leute ihr System in schwarz weiss sehen auch nichts dafür das sie die Mindestanforderungen nicht erfüllen (Aero) und so geht es weiter. Jaja das alte Auto wieder aber das Tanke ich bestimmt nicht mit Bier. gruss |
AW: AnimatePNG
Hmm..
Zitat:
1. Ich habe auf DEINEN Beitrag zu D6 und der DLL Geantwortet, nicht diskutiert. 2. Hmm.. Erst sagen ich soll D2010 benutzen und dann selber zu D2009 greifen. 3. Ach AERO ist notwendig.. Stand nirgens.. Und, eigenartig, Du hast selber auf XP getestet.. Gibs da AERO? 4. Ich habe jetzt nur mal deine DLL bei mir ausgetauscht (mit meiner D6 EXE): - Programm lässt sich ohne Exceptions starten - Es wird KEIN Bild angezeigt - Beim Schließen wieder eine Exception Ergebnis: Wie ich geschrieben hatte, scheinen ja wohl tatsächlich Fehler in deiner DLL gewesen zu sein, welche zu den Exceptions geführt haben. Somit kann es ja wohl nicht an meinem D6 gelegen haben ;) Resumé: Ich habe versucht Dir zu Helfen.. Habe Dir mögliche Problem quellen aufgezeigt.. Habe als Antwort (zusammengefasst) bekommen, dass es NICHT an deinem Teil liegt, sondern am D6 ;) Es konnte nun nachgewiesen werden, das es wohl u.a. doch an der DLL liegt. Wieso dann noch weiter helfen ? |
AW: AnimatePNG
Zitat:
Bei dem einen ist nun mal D2009 installiert. Ich schreibe meine Programme für die Allgemeinheit und es ist nur ein Hobby somit kannst du mich in keiner weise damit treffen. Ich muss mein Geld damit nicht verdienen Aber es gibt hin und wieder auch Leute die Dankbar darüber sind. Den Rest von deinem gekritzel spare ich mir zu beantworten. Seltsam nur das bei mir auf den XP System alles läuft obwohl ich dieses bestimmt schon mehr wie ein Jahr nicht mehr benutzt habe. Aber gut.. kein Problem für mich. gruss |
AW: AnimatePNG
hmmm....von Exceptions merk ich nix (XP-System).
Mein Problem is eher das er die Gifs nicht findet. :) Hab sie in den Sub-folger Image gepackt...nö Hab sie in den Bin folder direkt gepackt....nö. Nach kurzer Analyse komm ich auf 2 Probleme: a:) Die erste Datei bei FindAllFiles wird überlesen. Wenn nur 1 Gif da ist, findet er nix.:) b:) Bei mir war die Dateiendung groß geschrieben, was zum nächsten Problem führt. Nachdem ich die Probleme behoben hatte funktioniert das ganze unter XP (SP3). Das man das Projekt nicht so einfach mit einer älteren Version compilieren kann liegt schlicht und ergreifend daran, das man auch die Unicodestrings braucht (insbesondere bei den API-Calls). Wenn man sich die arbeit macht, das entsprechend anzupassen, wird das auch funktionieren. Also Holger...wo ist das Problem ? |
AW: AnimatePNG
Hi Uwe
Hatte auf der vorherigen Seite eine ![]() Sollte eigentlich laufen. Hatte beim einlesen auf
Delphi-Quellcode:
if High(Files) > 0 then
geprüft das geht natürlich nicht musste > -1 sein. Zitat:
gruss |
AW: AnimatePNG
Mit der gefixten Version für XP funktioniert es auch unter Windows 10 x64.
Durch die heftige Transparenz kann man allerdings in den Messageboxen fast nichts erkennen. |
AW: AnimatePNG
Zitat:
Aber gut das es läuft. ;) gruss |
AW: AnimatePNG
Ein kleines bisschen OT: Für alle, die nicht wissen, wo sie ein GIF herbekommen:
![]() Immerhin passt das auch thematisch ;) Sherlock |
AW: AnimatePNG
Zitat:
Besseres gibt es nicht ;) gruss |
AW: AnimatePNG
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Screenshots im Anhang... |
AW: AnimatePNG
Zitat:
Schon erstaunlich was man aus Gif-Bildern zaubern kann. :) |
AW: AnimatePNG
Zitat:
Aber dafür gibt es ein Lösung. Erstelle eine leere *.PGN ohne Transparenz Größe Bsp. 50x50 komplett schwarz und Speicher diese in den Skin Ordner mit den gleichen Name wie das Dialog Panel. Und schon ist es gut "DlgPanel.png" Kannst auch rot oder anders machen. Bin ja flexibel. Du darfst aber auch gerne deinen eigenen Skin machen davon abgesehen. Zitat:
Zitat:
gruss |
AW: AnimatePNG
Das erste Frame wird nun angezeigt mit APNG.
Habe noch ein kleines Problem was die Transparenz angeht die geht natürlich durch die Konvertierungen HBITMAP > Bitmap Bitmap to GDIPlus Image verloren. Aber bin guter Hoffnung arbeite daran. gruss |
AW: AnimatePNG
APNG Format funktioniert jetzt soweit.
2 Problem stehen noch an. 1. Transparenz wieder herstellen nach
Delphi-Quellcode:
GDIP_CreateBitmapFromHBITMAP(Bitmap, 0, pBitmap);
2. Etwas an der Schraube drehen was die CPU Belastung angeht. (Mache da noch irgend etwas falsch.) :) Normalerweise sollte diese Gegen 0% gehen. Anschließend muss ich noch ein Tool erstellen mit dem man APNG Dateien erstellen kann (Drag-Drop) sollte reichen. Mein Problem mit der Transparenz ist das ich hier kein TBitmap verwende dem ich einfach das HBitmap als Handle übergeben könnte. Hab noch nicht die richtige Lösung für das Problem gefunden. gruss |
AW: AnimatePNG
Ich las jetzt alle Deine Beiträge durch, Emil, aber eine Aussage konnte ich nicht entdecken, deshalb frage ich danach: Ist es angedacht, irgendwann einmal eine Konvertierungsfunktion von gif nach apng (und ggf. sogar zurück) anzubieten?
Gruß Delphi-Laie |
AW: AnimatePNG
Zitat:
Zurück nicht hin ja. Gif -> Apng gruss |
AW: AnimatePNG
Ich versuche ein HBitmap in ein GDIPlus konformes Format zu bringen
Delphi-Quellcode:
Es läuft alles durch nur beim aufruf von
function BitmapToImage(Hdib: HBitmap): Pointer;
var lpImg: Pointer; bi: tagBITMAPINFO; bm: Bitmap; BitmapLength: LongWord; bmpBits: TBytes; DC: HDC; begin Result := nil; DC := GetDc(0); if Hdib <> 0 then begin GetObject(Hdib, sizeof(bm), @bm); bi.bmiHeader.biSize := SIZEOF(bi.bmiHeader); bi.bmiHeader.biWidth := bm.bmWidth; bi.bmiHeader.biHeight := -bm.bmHeight; bi.bmiHeader.biPlanes := 1; bi.bmiHeader.biBitCount := 32; bi.bmiHeader.biCompression := BI_RGB; BitmapLength := bm.bmWidth * bm.bmHeight * 4; SetLength(bmpBits, BitmapLength + 1); GetDIBits(DC, Hdib, 0, bm.bmHeight, @bmpBits[0], bi, DIB_RGB_COLORS); if @bmpBits[0] <> nil then begin if Gdip_CreateBitmapFromScan0(bm.bmWidth, bm.bmHeight, bm.bmWidth * 4, PixelFormat32bppARGB, @bmpBits[0], lpImg) = OK then Result := lpImg; end; ReleaseDC(0, DC); end; end; GDIP_DrawImageRectRectI kracht es mal wieder. Ich sehen keinen Fehler in meinem Code. Eventuell TBytes ? gruss |
AW: AnimatePNG
Ok. APNG funktioniert nun soweit ohne das ich Tausende Units oder fremd Komponente einbinden musste.
Das Problem von oben. Musste
Delphi-Quellcode:
bmpBits: TBytes;
in meine Classe TAnimatePNG Privat verschieben danach ging es. Andererseits ist obige Funktion nicht das wahre vom Ei da ich dort ein unnötiges DC aufrufen muss. Also dann besser so. Ok zurück muss doch die obere verwenden diese hier ist wegen der Kompatibilität zu 16Bit.
Delphi-Quellcode:
gruss
function TAnimatePng.BitmapToImage(Hdib: HBitmap): Pointer;
type TByteArray = array of Byte; var BitmapLength: LongWord; bi: tagBITMAP; lpImg: Pointer; begin Result := nil; bmpBits := nil; GetObject(Hdib, sizeof(bi), @bi); BitmapLength := bi.bmWidth * bi.bmHeight * (bi.bmBitsPixel div 8); SetLength(bmpBits, BitmapLength + 1); GetBitmapBits(Hdib, BitmapLength, @bmpBits[0]); if @bmpBits[0] <> nil then begin if Gdip_CreateBitmapFromScan0(bi.bmWidth, bi.bmHeight, bi.bmWidth * 4, PixelFormat32bppARGB, @bmpBits[0], lpImg) = OK then Result := lpImg; end; DeleteObject(Hdib); end; |
AW: AnimatePNG
OK. Hier neue Version mit APNG Support allerdings erst mal nur Binär da ich noch etwas an der CPU last schrauben muss.
Da ihr keine APNG Dateien habt müsst ihr das kleine Tool GifToAPNG verwenden. Eine Animierte Gif Datei mit Drag Drop drauf ziehen danach wird eine Meldung ausgegeben wie viele Frames im APNG enthalten sind und die Datei unter gleichen Namen mit der Erweiterung "PNG" abgespeichert. Die Dateien können mit jedem Bild Viewer angesehen werden allerdings NICHT Animiert. Es wird dann nur das erste Bild angezeigt. Ihr könnt wenn das APNG abgespielt wird die Geschwindigkeit ändern und anschließend in das APNG speichern. gruss |
AW: AnimatePNG
Dieser Gif-Apng-Konverter funktioniert bei mir bei folgenden Gif-Dateien nicht:
![]() ![]() Nach ein paar Sekunden zeigt er Frames=0 an, und eine apng-Datei wird auch nicht erstellt. |
AW: AnimatePNG
Na ja wenn mal ein, zwei Gifs nicht gehen ist das kein Problem.
greets |
AW: AnimatePNG
Zitat:
Wenn etwas "nicht geht", dann liegt evtl. ein grundsätzliches Problem vor. Genaugenommen wollte ich genau diese beiden großen GIFs in APNGs verwandeln. |
AW: AnimatePNG
Zitat:
auf die Größe von 512x512 umlegst was glaubst du ist davon noch zu zeichnen wenn ich die Komplette Datei dann in den Speicher lade. Der Konverter ist aber im Moment mal nebensächlich. Von dir mal abgesehen scheint nicht wirklich jemand Interesse an dem Teil zu haben daher lege ich das erst mal auf's Eis da ich die CPU last nicht in den griff bekomme. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 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