AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

APNG Support

Ein Thema von EWeiss · begonnen am 18. Mär 2017 · letzter Beitrag vom 19. Mär 2017
Antwort Antwort
Seite 1 von 2  1 2   
EWeiss
(Gast)

n/a Beiträge
 
#1

APNG Support

  Alt 18. Mär 2017, 03:20
Hat jemand bock/Lust mitzuwirken an einer Library (oder einfacher Unit) für APNG Support? (Abspielen vor allem)
Hab im Netz gesucht für Delphi gibt es da so gut wie gar nichts.
Bin leider nicht so gut in English so das ich das aus der Wiki entnehmen könnte.

Interface usw.. kann ich selbst erstellen sowie die Zeichnungs Routinen mit GDIplus.

Bei den Rest Header einlesen usw.. bräuchte ich aber dann Hilfe.
Im Moment arbeite ich an einen Player für Gif Dateien auch wenn es den schon gibt.

Wie gesagt den APNG Support bekomme ich alleine nicht gebacken.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.330 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: APNG Support

  Alt 18. Mär 2017, 09:05
Ich würde nicht sagen, dass es da nichts gibt. Bei Google suchenAuf Anhieb habe ich eben diese Bibliothek gefunden:
https://sourceforge.net/projects/imaginglib/
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (18. Mär 2017 um 12:11 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: APNG Support

  Alt 18. Mär 2017, 12:32
Ich würde nicht sagen, dass es da nichts gibt. Bei Google suchenAuf Anhieb habe ich eben diese Bibliothek gefunden:
https://sourceforge.net/projects/imaginglib/
Die ist aber leider extrem aufgebläht ein Anwendungs Beispiel zum abspielen der APNG ist auch nicht enthalten, außer das Abspielen einzelner Frames.
Dann kann man nicht debuggen weil die TreeView Komponente nicht enthalten ist.

Also würde sagen bis auf diese nicht Anwendbare Lib hab ich nichts gefunden.
Ich sagte ja ich habe gesucht

gruss

Geändert von EWeiss (18. Mär 2017 um 12:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.330 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: APNG Support

  Alt 18. Mär 2017, 14:14
Aber damit gibt es ja schon einmal eine Grundlage. Und die Bibliothek ist ja Open Source.

Deshalb fände ich es sinnvoller diese weiterzuentwickeln anstatt das Rad neu zu erfinden und alles neu zu machen.

// EDIT:
Ach ja, die TShellTreeView /wurde mit Delphi bis XE6 mitgeliefert, war nur standardmäßig nicht als Komponente installiert. Hier im XE6 Repository gibt es die auch noch:
https://sourceforge.net/p/radstudiod...ShellControls/

// EDIT2:
Wenn ich mir den Quelltext so anschaue, finde ich die Bibliothek nicht wirklich aufgebläht. Und ein Beispiel zum Abspielen ist angesichts dessen, dass das Beispiel bereits in eine TPaintBox zeichnet und man an den Navigationsbuttons sieht, dass man nur ActiveImage setzen und die Paintbox refreshen muss, eine Sache von 30 Sekunden...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (18. Mär 2017 um 14:25 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: APNG Support

  Alt 18. Mär 2017, 14:24
Aber damit gibt es ja schon einmal eine Grundlage. Und die Bibliothek ist ja Open Source.

Deshalb fände ich es sinnvoller diese weiterzuentwickeln anstatt das Rad neu zu erfinden und alles neu zu machen.

// EDIT:
Ach ja, die TShellTreeView wird/wurde mit Delphi mitgeliefert, ist nur standardmäßig nicht als Komponente installiert...
Ich soll also 10000 Units einbinden nur um den Header der APNG einzulesen und diese abzuspielen?
Macht keinen Sinn oder 99% des gesamten Quelltext will oder muss ich gar nicht nutzen.

Sinnvoll wäre es wenn es hier nur ausschließlich um das Format APNG gehen würde aber dem ist bei weitem nicht so.

Zitat:
Aber damit gibt es ja schon einmal eine Grundlage.
Ja wenn es sich ausschließlich um APNG handeln würde.


gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.330 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: APNG Support

  Alt 18. Mär 2017, 14:38
Ich soll also 10000 Units einbinden nur um den Header der APNG einzulesen und diese abzuspielen?
Macht keinen Sinn oder 99% des gesamten Quelltext will oder muss ich gar nicht nutzen.
Das finde ich sinnvoller als für jede winzige Funktionalität eine eigene Bibliothek zu benutzen.
Eine Bibliothek, die nur ein einzelnes Format unterstützt, würde ich nur nutzen, wenn es nicht anders geht. Denn sonst blähe ich mir die Exe unnötig auf sobald ich mehr als eins brauche, da in jeder Bibliothek, die ich einbinde, die gleiche Funktionalität doppelt und dreifach enthalten ist...

Um Abspielen zu ergänzen reichen jedenfalls ein Button und ein Timer (Intervall 50-100ms):
Delphi-Quellcode:
procedure TMainForm.tmrPlayTimer(Sender: TObject);
begin
  if FImage.ImageCount > FImage.ActiveImage + 1 then
    FImage.ActiveImage := FImage.ActiveImage + 1
  else
    FImage.ActiveImage := 0;
  SetSupported;
  PaintBox.Repaint;
end;

procedure TMainForm.btnPlayClick(Sender: TObject);
begin
  tmrPlay.Enabled := not tmrPlay.Enabled;
  if tmrPlay.Enabled then
    btnPlay.Caption := 'Abspielen stoppen'
  else
    btnPlay.Caption := 'Abspielen starten';
end;
Das flackert so noch, aber das ließe sich sicher noch korrigieren.

// EDIT:
Wenn man das ganze Zeug aus OnPaint herausnimmt, das dort für eine Animation nicht reingehört (alles bis auf die letze Zeile) und in den Timer vor das Repaint setzt und DoubleBuffered im Objektinspektor für das Formular setzt, flackert da auch nix mehr.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (18. Mär 2017 um 14:49 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: APNG Support

  Alt 18. Mär 2017, 14:52
Zitat:
Das finde ich sinnvoller als für jede winzige Funktionalität eine eigene Bibliothek zu benutzen.
Sorry da sind wir unterschiedlicher Meinung.

Wenn ich für meine Form eine Checkbox benötige dann baue ich mir bestimmt nicht noch ein ListView mit ein.
Und genau das ist was diese Lib da tut.

Ich brauche kein OpenGL, 3D und den ganzen anderen Kram nur um ein APNG Image abspielen zu können.
Deshalb gibt es ja auch verschiedene Anwendungen die nur für eine einzige Funktion ausgelegt sind.

Für eine Datenbank Anbindung baue ich kein Exel ein wenn ich SQL verwende so einfach ist das.-

Zitat:
Wenn man das ganze Zeug aus OnPaint herausnimmt, das dort für eine Animation nicht reingehört (alles bis auf die letze Zeile) und in den Timer vor das Repaint setzt und DoubleBuffered im Objektinspektor für das Formular setzt, flackert da auch nix mehr.
Es wäre schön wenn das so einfach wäre

Zitat:
Button und ein Timer (Intervall 50-100ms):
Na ja sollte schon in Realzeit sein. (1ms)
Den Speed beim Abspielen kann man selbst innerhalb der APNG einstellen. (Abspeichern)
Der Timer muss jedoch 1ms betragen.

PS:
Aber anschauen (was ich schon habe) kann man es sich auf jeden fall.
Vielleicht kann man das teil auseinandernehmen so das man wirklich nur den Teil für APNG nutzen kann.

gruss

Geändert von EWeiss (18. Mär 2017 um 14:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.330 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: APNG Support

  Alt 19. Mär 2017, 05:27
Wenn ich für meine Form eine Checkbox benötige dann baue ich mir bestimmt nicht noch ein ListView mit ein.
Und genau das ist was diese Lib da tut.

Ich brauche kein OpenGL, 3D und den ganzen anderen Kram nur um ein APNG Image abspielen zu können.
Du verwechselst hier leider etwas. Nur weil die Bibliothek die Funktionalität zur Verfügung stellt, sagt ja keiner, dass du diese Units einbinden sollst. Das macht die VCL Demo ja auch nicht.

In deine Exe baust du davon also wenn, dann selbst etwas ein. Wenn du nur den reinen APNG Support einbaust, passiert das logischerweise auch nicht. Das eine dient ja dem Auslesen der Bilddaten usw. und das andere der Anzeige.

Würde die Bibliothek aber nicht beides beinhalten, müsste eine Bibliothek für den aktuellen OpenGL Teil den anderen Teil aber soweit nötig selbst implementieren. Braucht man dann beides, würde man wie gesagt die selbe Funktionalität doppelt in der Exe haben, da die gemeinsamen Funktionen nicht in einer Unit für beide Funktionen genutzt werden könnten.

Nur weil eine Bibliothek eine Funktionalität anbietet, bläht sich die Exe daher nicht auf. Wenn es viele einzelne Bibliotheken mit ähnlichen Funktionen gibt, dann schon.

Na ja sollte schon in Realzeit sein. (1ms)
Den Speed beim Abspielen kann man selbst innerhalb der APNG einstellen. (Abspeichern)
Der Timer muss jedoch 1ms betragen.
Ein Neuzeichnen sollte nicht häufiger passieren als nötig. Wenn sich das Bild also nur alle 30ms ändert, macht es keinen Sinn das gleiche Bild 30 mal zu zeichnen. Das flackert dann unnötig.

Ein Timer mit 1 ms macht aufgrund der Zeitauflösung keinen Sinn. Dann sollte es eher via Thread gelöst werden, wenn solche Bildwiederholraten im Raum stehen.

Diese Information wird im Moment leider nicht veröffentlicht soweit ich das sehe, aber ich habe einmal testweise die TfcTL Daten in TImageData eingebettet. Dann kommt man da auch heran und das ganze klappt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: APNG Support

  Alt 19. Mär 2017, 05:45
Das ist nett das du dich um mein Problem bzg. des Threads bemühst.
Das Problem ist nur ich bekomme das Teil hier nicht so zum laufen das es auch nur halbwegs funktioniert.
Ich habe die TreeView installiert aus
C:\Users\Public\Documents\RAD Studio\11.0\Samples\Delphi\VCL\ShellControls\dclsh lctrls.dpk

danach hatte ich nur noch Probleme mit der 1.4 bpl irgendwas.
Wenn ich dann einen Button zum Window addiert habe kamen nur noch Fehler in der IDE und hier

Delphi-Quellcode:
procedure TMainForm.SetSupported;
begin
  // Update image info and enable previous/next buttons
  LabDim.Caption := Format('%dx%d pixels', [FImage.Width, FImage.Height]);
  LabFileFormat.Caption := Imaging.FindImageFileFormatByName(FFileName).Name; // Error AV 000005
Also das Teil ist einfach zu alt und unter D2010 nicht ausführbar.
Ich habe nur die ImgBrowser.D2009.dproj
Siehe pic nach dem Klick auf den Play Button.

Na ja egal im Moment bin noch mit dem GIF Kram dran.
Auf der anderen Seite möchte ich auch niemand zumuten diese Library incl. TreeView extra für mein Programm zu installieren.
Das ist halt der Nachteil wenn man Komponente verwendet.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.330 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: APNG Support

  Alt 19. Mär 2017, 10:56
Also das Teil ist einfach zu alt und unter D2010 nicht ausführbar.
Ich habe es mit Delphi 10.1 Berlin getestet...

Auf der anderen Seite möchte ich auch niemand zumuten diese Library incl. TreeView extra für mein Programm zu installieren.
Das ist halt der Nachteil wenn man Komponente verwendet.
Dann lösch die halt, die ist ja nur dafür da eine Datei zur Anzeige auszuwählen. Mach halt einfach einen Button mit einem TOpenDialog hin stattdessen...

Und die ist ja nur für die Demo, die hat ja mit dem Rest nix zu tun.

Und installiert werden muss da gar nix von der Bibliothek, die Units einbinden reicht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 Uhr.
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