AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte AnimatePNG
Thema durchsuchen
Ansicht
Themen-Optionen

AnimatePNG

Ein Thema von EWeiss · begonnen am 20. Mär 2017 · letzter Beitrag vom 8. Jun 2018
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: AnimatePNG

  Alt 28. Mär 2017, 11:26
Es zeigt das du keine Ahnung von der Aufarbeitung einer APNG Datei hast.
Beschäftige dich doch erst mal damit bevor du irgendwelche Sprüche los lässt die kein Hand und kein Fuß haben.
Hast du dich schonmal gefragt, warum du in vielen Threads den Alleinunterhalter gibst?
Der Ton macht die Musik!

Du hast doch gar keine Ahnung für was diese Funktion gut ist.. und was in dieser enthalten ist..
Also ruhig Blut.
Diese Funktion nimmt alle Frames aus einer APNG und schreibt die hintereinander in ein großes Bitmap:
Du hast 984 Frames diese mal 512 in der weite.
Das bedeutet deine Datei hätte dann eine gesamt weite im Speicher von 503808 Pixeln.
Oder du erklärst es zu ungenau...aber dafür können wir ja nichts.

Also Konstruktive Dinge wären durchaus angebracht.
Gerne, aber dazu musst du auch mal die Ideen der anderen akzeptieren und überlegen, ob die vielleicht stimmen könnten.
Konstruktive Vorschläge sind erst konstruktiv, wenn sie auch umgesetzt werden.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: AnimatePNG

  Alt 28. Mär 2017, 11:32
Zitat:
Diese Funktion nimmt alle Frames aus einer APNG und schreibt die hintereinander in ein großes Bitmap:
Nö tut sie nicht.
Was steht den da? BitmapToImage

Das was ich meinte war der Beitrag (code da drüber).
For k := bla, bla.

BitmapToImage konvertiert lediglich 1 HBitmap in ein GDIplus fähiges Image.

Zitat:
Der Ton macht die Musik!
Ach ja?
Was soll man von solchen Sprüchen halten.

Zitat:
Um es ein die analoge Welt zu übersetzen:
Du packst das Blätter-Paket mit den Bildern aus und klebst alle Bilder hintereinander auf eine lange Papierrolle und versuchst diese abzuspielen.
Das diese Rolle dann zu lang wird, um sie ohne "knittern" und "einreißen" bedienen zu können sollte eigentlich auf der Hand liegen.
Versuche doch mal lieber den Ansatz, einfach die linke obere Ecke zu tackern und das Blätter-Paket wie ein Daumenkino zu bedienen.
Sowas kann man sich sparen und verursacht nur böses Blut.
Sachlich bleiben ohne das sorry dumme Gewäsch.

Und nun möchte ich dich bitten hier im Thread keinen Stress zu verursachen.

gruss

Geändert von EWeiss (28. Mär 2017 um 12:55 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: AnimatePNG

  Alt 28. Mär 2017, 12:32
@jaenicke

Hab mal ein Pic angehängt bei dem man sehen kann wie die Bilder temporär abgelegt werden bevor sie zu einem Image kombiniert werden.
Man sieht nicht viel aber es lässt einen erahnen was passiert wenn man eine Datei mit 984 Frames bearbeiten muss.
Ich glaube deshalb das GDI+ das einfach nicht schafft.

14 Frames..

gruss

Geändert von EWeiss (11. Jul 2019 um 15:47 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

AW: AnimatePNG

  Alt 28. Mär 2017, 12:46
Also, ich begrüße es, daß Emil sich einer solchen Herausforderung stellt und empfinde diesen Angriff auf ihn als deplaciert.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: AnimatePNG

  Alt 28. Mär 2017, 12:59
Zitat:
Also, ich begrüße es, daß Emil sich einer solchen Herausforderung stellt
Ich versuche ja alles damit es läuft das kannst du schon daran erkennen wie viele neue Threads ich in letzter zeit erstellt habe.
Alles kann man halt nicht wissen.
Da ist man wie vor gestoßen.

Aber gut sei's drum

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: AnimatePNG

  Alt 28. Mär 2017, 13:41
Sorry nochmal..
Hier ein PIC welchen Unterschied es macht ob man DrawImage oder Cached Bitmap verwendet.

120 Bilder werden gezeichnet.
Oben ist DrawImage.
Bin mir nur nicht klar darüber wie gdipDrawImageRectRectI mir gdipDrawCachedBitmap ersetzen soll.
Ich brauche die zweite Dimension von gdipDrawImageRectRectI.

Das Teil ist 3x mal so schnell. 25% CPU / 3 = 8,3 damit könnte ich leben.
Hmmm... muss denken . LOL.

gruss

Geändert von EWeiss (31. Mär 2017 um 18:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: AnimatePNG

  Alt 28. Mär 2017, 13:47
Du benutzt gdipDrawImageRectRectI quasi genauso wie gdipDrawCachedBitmap nur dass du nicht 10 einzelne Bilder hast sondern 1 Bild aus dem du nur einen Ausschnitt zeichnest, den du darstellen willst.
Dafür gibts die src und dest Parameter. srcX/Y/Width/Height sind das Rechteck dass aus dem Bild mit den Einzelbildern ausgeschnitten wird und destX/Y/Width/Height ist das Rechteck in dem der ausgeschnittene Teil dargestellt werden soll. Also wahrscheinlich 0,0,Einzelbild.Width,Einzelbild.Height.

Oder hab ich was falsch verstanden?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: AnimatePNG

  Alt 28. Mär 2017, 13:53
Du benutzt gdipDrawImageRectRectI quasi genauso wie gdipDrawCachedBitmap nur dass du nicht 10 einzelne Bilder hast sondern 1 Bild aus dem du nur einen Ausschnitt zeichnest, den du darstellen willst.
Dafür gibts die src und dest Parameter. srcX/Y/Width/Height sind das Rechteck dass aus dem Bild mit den Einzelbildern ausgeschnitten wird und destX/Y/Width/Height ist das Rechteck in dem der ausgeschnittene Teil dargestellt werden soll. Also wahrscheinlich 0,0,Einzelbild.Width,Einzelbild.Height.

Oder hab ich was falsch verstanden?
ImageRectI
Delphi-Quellcode:
GDIP_DrawImageRectRectI(PngGraphics, PngImage, X, Y, w, h, w * integer
  (CurPngPlayInfo.PngFrame) - w, 0, w, h, 2, nil, False, nil);
gdipDrawCachedBitmap hat nur die Weite und die höhe.
Dieser Part ist besonders wichtig weil er das Bild im Bild von der Aktuellen Frame Position zeichnet.
Delphi-Quellcode:
w * integer
  (CurPngPlayInfo.PngFrame) - w
Ich möchte vom GDIP_DrawImageRectRectI weg und anstelle dessen gdipDrawCachedBitmap verwenden weil es 3x mal schneller ist.
Glaube aber das es so nicht umsetzbar ist.

gruss

Geändert von EWeiss (28. Mär 2017 um 13:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:04 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