Thema: AnimatePNG

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#94

AW: AnimatePNG

  Alt 28. Mär 2017, 10:57
Aber das ist ja nicht ein großes Bild, sondern 984 einzelne. Da sollte die Anzahl der Frames keine Rolle spielen.

Im Moment kann ich mir das allerdings nicht anschauen, erst zu Hause.
Es wird auf die Größe von 512 Pixeln Transformiert.
Es gibt eine Möglichkeit die Bilder unskaliert umzuwandeln habe das aber im Moment einfach mal deaktiviert (nicht öffentlich gemacht)
weil in meiner Anwendung 512x512 am besten aussieht.

Zitat:
Da sollte die Anzahl der Frames keine Rolle spielen.
Auch wenn es nur ein Bild ist muss ich doch alle Bilder Hintereinander erst mal Temporär aufarbeiten.
Und die stehen im Speicher hintereinander.

Delphi-Quellcode:
      for K := 0 to FrameCount - 1 do
      begin
        GPStatus(GdipImageSelectActiveFrame(img, @pGUID, K));
        // Image zeichnen
        if (MaxSquareSize = 512) then
        begin
          GPStatus(GdipDrawImageRectRectI(Graphics, img, xStep + xP, yP, xS, yS, 0, 0, round(W),
              round(H), UnitPixel, nil, Abort, nil));
          xStep := xStep + AniHeader.Width;
        end
        else
        begin
          GPStatus(GdipDrawImageRectI(Graphics, img, xStep, 0, round(W), round(H)));
          xStep := xStep + round(W);
        end;

        lblValue.Caption := 'Value = ' + IntToStr(K + 1);
        lblValue.Repaint;
      end;
      // graphics freigeben
      GPStatus(GdipDeleteGraphics(Graphics));
    end;
Zurück wird dann 1 Image geliefert das alle Frames enthält.

    Result := BitmapToImage(imgHDC);

gruss

Geändert von EWeiss (28. Mär 2017 um 11:14 Uhr)
  Mit Zitat antworten Zitat