Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm auf Windows Server 2016 (Citrix) langsam (https://www.delphipraxis.net/214854-programm-auf-windows-server-2016-citrix-langsam.html)

dataspider 22. Mär 2024 10:40

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
Erst mal vielen Dank an alle, die mich hier mit ihren Kenntnissen unterstützt haben.

Ich habe mit verschiedenen Grafikformaten getestet und speichere die Kopfbögen jetzt als Bitmap.
Ich hätte dieses Ergebnis so nicht erwartet.

Die neuen Grafiken sind jetzt, da Bitmap statt 1 MB 26 MG groß.
Jetzt dauert das Laden des Reports keine 3 Sekunden mehr.

Ich weiß jetzt zwar nicht, was letztendlich passiert ist, dass es plötzlich langsam wurde, aber das Problem ist gelöst.

Frank

Sinspin 22. Mär 2024 13:21

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
Das ist krass, hätte ich auch nicht erwartet.

Kommt drauf an wieviele Farben du im Bitmap hast. Sonst könntest Du versuchen das Bild mit weniger Farbtiefe zu speichern. Dann wird es kleiner.

hanvas 22. Mär 2024 14:00

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
Zitat:

Zitat von dataspider (Beitrag 1534927)
Erst mal vielen Dank an alle, die mich hier mit ihren Kenntnissen unterstützt haben.

Ich habe mit verschiedenen Grafikformaten getestet und speichere die Kopfbögen jetzt als Bitmap.

Die neuen Grafiken sind jetzt, da Bitmap statt 1 MB 26 MG groß.
Frank

An anderer Stelle wurde ja schon darauf hingewiesen das die Anzahl der Farben eine große Rolle spielt. Bei den meisten Headern in Briefen etc. kommt man eigentlich mit einer kleinen Anzahl aus, es sei denn es sind Farbverläufe etc. vorhanden. Helfen kann da eine optimierte Palette zu verwenden. Delphis TGifImage hat eine Methode Optimize bzw. OptimizeColorMap damit kann man relativ kleine Bilder erzeugen.

Um ein Bild nach Gif zu konvertieren kannst Du beispielsweise

Code:

procedure ConvertBMP2GIF;
var
  bmp: TBitmap;
  gif: TGIFImage;
begin
  gif := TGifImage.Create;
  try
    bmp := TBitmap.Create;
    try
      bmp.LoadFromFile('MyBitmap.BMP');
      gif.Assign(bmp);
    finally
      bmp.Free;
    end;
    gif.SaveToFile('MyBitmap.GIF');
  finally
    gif.Free;
  end;
end;
verwenden

hth Ha Joe

paule32.jk 22. Mär 2024 16:05

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
eine andere Methode wäre,

- TCP Server auf Client starten, der auf Port lauscht (Indy 10)

- Bild aufnehmen / im Hintergrund zeichnen (interne Canvas)
- Bild optimieren (kleinere Farbtiefen)
- Bild in kleine Quadrate zerlegen (erfordert ggf. größere Width und Height - je nach Anwendungsfall)
- Bild Stückchen für Stückchen per zLib verkelinern und mit ID versehen
- Bild einen Protokoll vergeben - Header (Größe, Farben, Teile-ID, ...)
- Bild einen Protokoll vergeben - Body (raw-Bytes für die Daten)
- Puffer für Bild vorab berechnen (max. 4.096 Bytes - je nach Qualität der Leitung)

- TCP Verbindung aufbauen (Indy 10 - die unterstützen SSL, kein Indy 9 !)
- Bild-Daten senden - ggf. Prüfsumme mit dazu

- Bilddaten zusammen führen
- zLib Daten wieder de-packen
- Daten in Hintergrund Canvas speichern

- mit BitBlt auf TPainter / TPaintBox kopieren


(so würd ich das machen)

Dalai 22. Mär 2024 20:04

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
Wie groß ist denn das Bitmap? Ich hab hier eines rumliegen mit ca. 14 MiB, das 2560x1920 Pixel hat. 26 MB ist ja fast doppelt so groß und muss demnach noch wesentlich mehr Pixel haben. Alles absurde Abmessungen für einen simplen Kopfbogen IMO, wenn es um Papier bis A3 oder so geht.

Grüße
Dalai

himitsu 22. Mär 2024 20:48

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
Nja, bei 32 Bit wären das auch nur so etwas 2500*2500 Pixel, also ein halbes A4 mit 600 DPI :stupid:

hanvas 23. Mär 2024 09:04

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
Zitat:

Um ein Bild nach Gif zu konvertieren kannst Du beispielsweise....
Natürlich geht das auch rückwärts. Du kannst also erst deine Palette auf 256 Farben bringen und dann wieder als Bitmap speichern.

Apropos Bitmap 1: Das verwenden von nur 256 Farben bringt nichts wenn du im RGB Format speicherst
Apropos Bitmap 2: Du kannst eine Lauflängenkodierung zum speichern verwenden, das ist ein einfaches verlustfreies Kompressionsverfahren welches überwiegend große Bereiche von gleichen Pixeln (meistens Hintergrund) gut verarbeiten kann.

Außerdem könntest Du die Bilder in Vektorgrafiken umwandeln, dass wäre für die meisten Hintergrundbilder naturlich die speicherplatzsparendste Möglichkeit und wäre eher in Bruchteilen von Sekunden geladen. Helfen kann Dir dabei Autotrace [1].

cu Ha-Joe

[1] https://github.com/autotrace/autotrace

Redeemer 23. Mär 2024 13:42

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
JPEG ist ja ausschließlich für Fotos geeignet. Ich bezweifle, dass der Briefbogen aus Fotos besteht. Für alles, was kein Foto ist, nimmt man Vektorgrafiken, also normalerweise SVG. Da Reportgeneratoren in der Regel keine verlustfreie Einbindung von SVG unterstützen sondern diese rastern, habe ich mir selbst eine Konvertierung in EMF geschrieben. Häufig in Reports verwendete Vektorgrafiken liegen als Performancegründen direkt als EMF in den Stammdaten vor. Im Repository eines Projekts ist im Normalfall das Icon die einzige Binärdatei.
:duck:

dataspider 24. Mär 2024 08:06

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
OK, da noch weitere Hinweise gekommen sind, versuche ich mal eine Zusammenfassung...

Die Bildgröße ist 2480 x 3508 (A4 300 dpi).
Reduziere ich die Farbe auf 256, ist die BMP noch ca. 8,5 MB groß.
Dabei ist die Qualität immer noch sehr gut, also vom Basisbild eigentlich nicht zu unterscheiden.
Gestaunt habe ich bei Umwandlung in GIF (wie von hanvas empfohlen).
Bei GIF erhalte ich die kleinsten Dateien (280 kB) mit der besten Qualität.
Ich habe allerdings noch nicht probiert, wie schnell ReportBuilder dies dann unter Windows Server 2016 zeichnet.

Ich habe mich auch mit unserem Netzwerk und Citrix Guru beraten, was überhaupt passiert ist.
Die Zeichenroutinen in Delphi auf ein Canvas sind ja Bitmap bezogen.
Dafür braucht es keine Dekomprimierung oder sonstige Berechnungen.
Und deshalb ist wohl Bitmap am schnellsten.

Da es bei Start der Anwendung unter Windows 11 keine Probleme gibt, sondern nur bei Start unter Windows Server 2016,
liegt es nicht an Citrix, nicht am Netzwerk etc. sondern an den Zeichenroutinen im Zusammenhang mit dem Betriebssystem.
Wir vermuten, dass irgendein Windows Update hier ursächlich verantwortlich ist.

Da es momentan schön schnell läuft, will ich nicht mehr so viel Zeit investieren.
Ich probiere das noch mit GIF - Dateien.
Dann probiere ich noch, die Bilder selbst im Code in BMP umzuwandeln (geht wohl im DataSet mit OnGetData).

Für mehr habe ich momentan keine Zeit ;)

Also - noch mal vielen Dank an Alle!

Frank

paule32.jk 24. Mär 2024 15:10

AW: Programm auf Windows Server 2016 (Citrix) langsam
 
was spricht denn dagegen, sich die Druckerrei seines Vertrauens zu beauftragen,
eine Vorlage in Print zu geben, die dann auf 500 A4 Blatt in den Drucker eingesetzt werden kann ?

man braucht sich dann um Schlieren im Bild, die durch den mehrmaligen (Eigenen) Druck ergibt, nicht mehr sorgen,
und nur noch den eigentlichen Text, den, so nehme ich mal an, unter einen Laserdrucker (was das Economischte wäre) gedruckt wird.

Dann kann man sich ja auch noch überlegen, ob am Rand Brieffalz-Marken gedruckt werden sollen
(also schon schon von der Druckerrei kommend - da ja Hauseigene Drucker selten über einen Rand von 5mm hinaus kommen).

Falls denn das Saison bedingt ist, kann man ja einfach die Blätter tauschen.
Bei modernen Druckern hat man ja mehrere Einschub-Möglichkeiten.
...
Zumal man dann auch die weiteren Druckkosten für die Rückseite des Briefbogens sparrt, wo dann meinst die AGB's zu finden sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Seite 2 von 3     12 3      

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