Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   AnimatePNG (https://www.delphipraxis.net/192106-animatepng.html)

EWeiss 23. Mär 2017 19:44

AW: AnimatePNG
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1365351)
Zitat:

Zitat von EWeiss (Beitrag 1365300)
Zitat:

Zitat von Delphi-Laie (Beitrag 1365280)
Funktioniert bei mir auch nicht, gleich nach dem Programmstart gibt es die Fehlermeldung "...hat ein Problem festgestellt und muß beendet werden".

Dabei habe ich die Verzeichnisstruktur komplett übernommen und lcd.ttf explizit bei Windows registriert (bzw. registrieren lassen).

Danke nur mit funktioniert nicht kann ich leider nichts anfangen trotzdem Danke.
W10?, Aero aus oder nicht vorhanden.

XP. Ist das zuwenig?

Kann ich mal eben prüfen. ;)

gruss

Luckie 23. Mär 2017 20:00

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.

EWeiss 23. Mär 2017 20:07

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

Delphi-Laie 23. Mär 2017 21:45

AW: AnimatePNG
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von EWeiss (Beitrag 1365359)
@Delphi-Laie

[...]

Wenn du möchtest kannst du es gerne nochmal testen.

Ja, danke, das interessiert mich immer noch.

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.

EWeiss 23. Mär 2017 21:52

AW: AnimatePNG
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1365374)
Zitat:

Zitat von EWeiss (Beitrag 1365359)
@Delphi-Laie

[...]

Wenn du möchtest kannst du es gerne nochmal testen.

Ja, danke, das interessiert mich immer noch.

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

Die Meldung sagt es doch schon.
Du hast keine Gif Dateien im Images Folder.
Lade das doch mal und Versuchs erneut.

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

Luckie 23. Mär 2017 21:56

AW: AnimatePNG
 
Pack doch mal in de Folder ein Beispiel Gif.

EWeiss 23. Mär 2017 21:59

AW: AnimatePNG
 
Zitat:

Zitat von Luckie (Beitrag 1365379)
Pack doch mal in de Folder ein Beispiel Gif.

Würde ich gern aber das Archiv ist dann zu groß > 4MB 1 Datei.

gruss

Delphi-Laie 23. Mär 2017 22:00

AW: AnimatePNG
 
Zitat:

Zitat von EWeiss (Beitrag 1365376)
Die Meldung sagt es doch schon.
Du hast keine Gif Dateien im Images Folder.

Das war dieser Fehlermeldung nicht zu entnehmen. Deshalb muß man doch auch kein Programm beenden. Könnte man doch z.B. einen Dateiöffnen-Dialog anbieten.

Zitat:

Zitat von EWeiss (Beitrag 1365376)
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.

Naja, anstandslos läuft es immer noch nicht, aber besser. Nur eine Gif-Datei erkennt das Programm nicht, kommt wieder diese Fehlermeldung. Mit zweien funktioniert es dann.

EWeiss 23. Mär 2017 22:03

AW: AnimatePNG
 
Zitat:

Naja, anstandslos läuft es immer noch nicht, aber besser. Nur eine Gif-Datei erkennt das Programm nicht, kommt wieder diese Fehlermeldung. Mit zweien funktioniert es dann.
Das ist doch mal eine Ansage..
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:

Das war dieser Fehlermeldung nicht zu entnehmen. Deshalb muß man doch auch kein Programm beenden. Könnte man doch z.B. einen Dateiöffnen-Dialog anbieten.
Klar ganz deutlich sogar.
Zitat:

no image Folder added or no Images added
Danke.

Luckie 23. Mär 2017 22:05

AW: AnimatePNG
 
Ich meine, ich weiß nicht, wo ich so schnell eine passende Gif-Datei herbekommen soll.

EWeiss 23. Mär 2017 22:07

AW: AnimatePNG
 
Zitat:

Zitat von Luckie (Beitrag 1365385)
Ich meine, ich weiß nicht, wo ich so schnell eine passende Gif-Datei herbekommen soll.

Schau mal oben im erste Beitrag
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

Delphi-Laie 23. Mär 2017 22:08

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.

EWeiss 23. Mär 2017 22:11

AW: AnimatePNG
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1365387)
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.

Das ist beabsichtig und hat damit zu tun, da es sich um ein POPUP Window handelt.
Das setzt sich nicht in den Taskmanager "Anwendungen" dafür benötigt man einen anderen Window Style.

gruss

Delphi-Laie 23. Mär 2017 22:12

AW: AnimatePNG
 
Danke, wieder etwas dazugelernt!

EWeiss 23. Mär 2017 22:13

AW: AnimatePNG
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1365389)
Danke, wieder etwas dazugelernt!

Kein Problem.
Das ist nun mal so bei geskinten (Rahmenlosen) Fenstern.

gruss

EWeiss 24. Mär 2017 00:51

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

HolgerX 24. Mär 2017 03:52

AW: AnimatePNG
 
Hmm..

Zitat:

Zitat von EWeiss (Beitrag 1365341)

Meine DLL würde dir nichts nutzen in Verbindung mit D6.


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..

EWeiss 24. Mär 2017 04:04

AW: AnimatePNG
 
Du must jetzt nicht komisch kommen sorry nur weil ich deine schrottige TGif Komponente nicht verwende. (Mit deinen worten)
Zitat:

Egal... Darüber zu diskutieren ist hier falsch..
Sehe ich genau so warum tust du es dann?

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

HolgerX 24. Mär 2017 04:27

AW: AnimatePNG
 
Hmm..

Zitat:

Zitat von EWeiss (Beitrag 1365422)
Du must jetzt nicht komisch kommen sorry nur weil ich deine schrottige TGif Komponente nicht verwende. (Mit deinen worten)
Zitat:

Egal... Darüber zu diskutieren ist hier falsch..
Sehe ich genau so warum tust du es dann?

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



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 ?

EWeiss 24. Mär 2017 04:34

AW: AnimatePNG
 
Zitat:

Hmm.. Erst sagen ich soll D2010 benutzen und dann selber zu D2009 greifen.
Tja es soll Leute geben die 2 Systeme auf ihren Rechner haben.
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

Ghostwalker 24. Mär 2017 05:23

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 ?

EWeiss 24. Mär 2017 05:30

AW: AnimatePNG
 
Hi Uwe
Hatte auf der vorherigen Seite eine gefixte Version für XP hochgeladen..

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:

Also Holger...wo ist das Problem ?
Meine schrot.. DLL ist doch klar. :)


gruss

jaenicke 24. Mär 2017 07:06

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.

EWeiss 24. Mär 2017 07:10

AW: AnimatePNG
 
Zitat:

Zitat von jaenicke (Beitrag 1365429)
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.

Kann sein ist halt abhängig vom Hintergrund des Desktop.
Aber gut das es läuft. ;)

gruss

Sherlock 24. Mär 2017 07:12

AW: AnimatePNG
 
Ein kleines bisschen OT: Für alle, die nicht wissen, wo sie ein GIF herbekommen: http://thecodinglove.com/

Immerhin passt das auch thematisch ;)

Sherlock

EWeiss 24. Mär 2017 07:20

AW: AnimatePNG
 
Zitat:

Zitat von Sherlock (Beitrag 1365433)
Ein kleines bisschen OT: Für alle, die nicht wissen, wo sie ein GIF herbekommen: http://thecodinglove.com/

Immerhin passt das auch thematisch ;)

Sherlock

Klick mal oben im ersten Beitrag auf den Link ;)
Besseres gibt es nicht ;)

gruss

jaenicke 24. Mär 2017 08:11

AW: AnimatePNG
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von EWeiss (Beitrag 1365432)
Kann sein ist halt abhängig vom Hintergrund des Desktop.

Ich finde es halt nicht so günstig das so stark transparent zu machen.

Screenshots im Anhang...

Ghostwalker 24. Mär 2017 09:23

AW: AnimatePNG
 
Zitat:

Zitat von EWeiss (Beitrag 1365426)
Hi Uwe
Hatte auf der vorherigen Seite eine gefixte Version für XP hochgeladen..

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:

Also Holger...wo ist das Problem ?
Meine schrot.. DLL ist doch klar. :)


gruss

Läuft ja auch bei mir :) (bis auf die Groß-/Kleinschreibungsgeschichte...aber Das ist nun wirklich ein Klacks).

Schon erstaunlich was man aus Gif-Bildern zaubern kann. :)

EWeiss 24. Mär 2017 16:10

AW: AnimatePNG
 
Zitat:

Zitat von jaenicke (Beitrag 1365448)
Zitat:

Zitat von EWeiss (Beitrag 1365432)
Kann sein ist halt abhängig vom Hintergrund des Desktop.

Ich finde es halt nicht so günstig das so stark transparent zu machen.

Screenshots im Anhang...

Ist ja kein Problem.
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:

bis auf die Groß-/Kleinschreibungsgeschichte
Ah jo bin kein English Man von daher.. :dancer2: Aber ich habe es wenigstens versucht. ;)

Zitat:

Schon erstaunlich was man aus Gif-Bildern zaubern kann.
Bei "Normalen Menschen" hat man da schon eine gewisse Achtung vor, da Georg aber fast Blind ist, ist das schon irgendwie Hochachtungsvoll.

gruss

EWeiss 24. Mär 2017 18:00

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

EWeiss 25. Mär 2017 06:47

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

Delphi-Laie 26. Mär 2017 15:56

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

EWeiss 26. Mär 2017 15:59

AW: AnimatePNG
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1365570)
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

Ja.. Das ist der sinn der Sache.
Zurück nicht hin ja. Gif -> Apng

gruss

EWeiss 26. Mär 2017 19:48

AW: AnimatePNG
 
Ich versuche ein HBitmap in ein GDIPlus konformes Format zu bringen

Delphi-Quellcode:
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;
Es läuft alles durch nur beim aufruf von
GDIP_DrawImageRectRectI kracht es mal wieder.

Ich sehen keinen Fehler in meinem Code.
Eventuell TBytes ?

gruss

EWeiss 26. Mär 2017 20:38

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:
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;
gruss

EWeiss 26. Mär 2017 21:31

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

Delphi-Laie 27. Mär 2017 11:37

AW: AnimatePNG
 
Dieser Gif-Apng-Konverter funktioniert bei mir bei folgenden Gif-Dateien nicht:

http://sortierkino.bplaced.net/Sierp...rgroessern.gif
http://sortierkino.bplaced.net/Sierp...erkleinern.gif

Nach ein paar Sekunden zeigt er Frames=0 an, und eine apng-Datei wird auch nicht erstellt.

EWeiss 27. Mär 2017 16:24

AW: AnimatePNG
 
Na ja wenn mal ein, zwei Gifs nicht gehen ist das kein Problem.

greets

Delphi-Laie 27. Mär 2017 16:40

AW: AnimatePNG
 
Zitat:

Zitat von EWeiss (Beitrag 1365662)
Na ja wenn mal ein, zwei Gifs nicht gehen ist das kein Problem.

Na, das ist doch nicht ernsthaft Dein Anspruch als Programmierer?!

Wenn etwas "nicht geht", dann liegt evtl. ein grundsätzliches Problem vor.

Genaugenommen wollte ich genau diese beiden großen GIFs in APNGs verwandeln.

EWeiss 27. Mär 2017 17:15

AW: AnimatePNG
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1365665)
Zitat:

Zitat von EWeiss (Beitrag 1365662)
Na ja wenn mal ein, zwei Gifs nicht gehen ist das kein Problem.

Na, das ist doch nicht ernsthaft Dein Anspruch als Programmierer?!

Wenn etwas "nicht geht", dann liegt evtl. ein grundsätzliches Problem vor.

Genaugenommen wollte ich genau diese beiden großen GIFs in APNGs verwandeln.

Der Konverter Redimensioniert die Frames von einem Gif auf die größe 512x512 wenn du 1000 Frames wie in deiner Gif vorhanden
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 09:27 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz