Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fastreport 5 VCL: Image nicht verzerren? (https://www.delphipraxis.net/192136-fastreport-5-vcl-image-nicht-verzerren.html)

SearchBot 22. Mär 2017 10:23

Fastreport 5 VCL: Image nicht verzerren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe folgendes Problem mit dem Audruck von QR-Codes in Fastreport:

In der Vorschau ist der Code korrekt angezeigt, im Ausdruck dann sind Grauschattierungen im Bild, so als ob nach der Vorschau die Bilder neu berechnet werden und/oder dabei verzerrt werden.

Hintergrund: Da Fastreport (in der bei 'Berlin' mitgeliefertern Version) selbst keine QR-Codes erzeugen kann, helfe ich mir mit einem Image, in das ich mit ZXing den QR-Code "reinmale". Auf dem Vorschaubildschirm ist der Code klar lesbar, wie gewünscht. Im Audruck dann eben nicht und somit wird der QRC durch die Schattierungen unlesbar.

Ich habe Autosize und Strech auf false.
Ist da irgenwo ein property, womit man eine Neuberechnung von Bitmaps vermeiden kann?

So weise ich die QRC dem Ausdruck zu:
Delphi-Quellcode:
procedure TForm1.frxGLabelsBeforePrint(Sender: TfrxReportComponent);
var
   Pict: TfrxPictureView;
begin
   if sender is TfrxPictureView then
   begin
      if TfrxPictureView(sender).Name = 'img_QR' then
      begin
         QR_update('Bla'); //Hier wird in QRCodeBitmap (Typ ist TBitmap) der QRC reingemalt
         Pict := TfrxPictureView(sender);
         Pict.Stretched:=false;
         Pict.Picture.Bitmap:=QRCodeBitmap;
      end;
   end;
end;
img_QR ist wie folgt definiert:
Code:
      object img_QR: TfrxPictureView
        ShiftMode = smDontShift
        Left = 166.299320000000000000
        Top = 11.338590000000000000
        Width = 45.000000000000000000
        Height = 45.000000000000000000
        DataField = 'img_QR'
        DataSet = frxUserDataSet2
        DataSetName = 'frxUserDataSet2'
        Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom]
        HightQuality = False
        Transparent = False
        TransparentColor = clWhite
      end

TiGü 22. Mär 2017 10:31

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Sieht der Ausdruck in einer PDF auch so bescheiden aus?

Darlo 22. Mär 2017 10:52

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Ich hatte so ein ähnliches Problem bei transparenten TCharts. Kannst Du den Hintergrund des QR-Codes weiß machen, bzw. als jpg speichern?
Der einzige Weg bei mir, da ich die Transparenz brauchte, war den Hintergrund und alle Bilder erst als JPG erstellen und anschließend als Hintergrundbild in den Report laden.

SearchBot 22. Mär 2017 15:04

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Zitat:

Zitat von TiGü (Beitrag 1365039)
Sieht der Ausdruck in einer PDF auch so bescheiden aus?

Das ist ein Ausdruck auf ein Etikett, Wachs-Transfer oder so...
Mit PDF hab ichs nicht versucht, weil ich auf einem Etikett brauche :wink:

SearchBot 22. Mär 2017 15:07

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Zitat:

Zitat von Darlo (Beitrag 1365044)
Ich hatte so ein ähnliches Problem bei transparenten TCharts. Kannst Du den Hintergrund des QR-Codes weiß machen, bzw. als jpg speichern?
Der einzige Weg bei mir, da ich die Transparenz brauchte, war den Hintergrund und alle Bilder erst als JPG erstellen und anschließend als Hintergrundbild in den Report laden.

Der Hintergrund ist weiß; im Foto sieht es halt nicht so toll aus.
Falls du den Hintergrund in der Bitmap meinst, der ist auch clWhite.

Speichern hatte ich auch mal versucht, um zu gucken, ob das Problem schon in der Bitmap liegt - aber irgendwie hat er mir die Bilder nicht gespeichert.:pale:

nahpets 22. Mär 2017 15:44

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Funktioniert das Speichern eventuell mit
Delphi-Quellcode:
Pict.Picture.Bitmap.SaveToFile('qr.bmp');
?

Ein bisserl sieht mir das Bild so aus, als sei es ein JPeg, das mit sehr hohem Qualitätsverlust gespeichert / verarbeitet wurde.

Was genau verbirgt sich hinter QRCodeBitmap?

Ein Bitmap?

Dann versuch es mal mit
Delphi-Quellcode:
Pict.Picture.Bitmap.Assign(QRCodeBitmap);


Oder
Delphi-Quellcode:
Pict.Picture.Bitmap.Assign(Nil); // Alternative zum fehlenden .Clear ...
Pict.Picture.Bitmap.Assign(QRCodeBitmap);

sko1 23. Mär 2017 09:56

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Zitat:

Pict.Picture.Bitmap.Assign(Nil); // Alternative zum fehlenden .Clear ...
Genial :-)))
Da muss man erst mal drauf kommen!

Ciao
Stefan

SearchBot 23. Mär 2017 13:46

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Zitat:

Zitat von nahpets (Beitrag 1365110)
Funktioniert das Speichern eventuell mit
Delphi-Quellcode:
Pict.Picture.Bitmap.SaveToFile('qr.bmp');
?
Ein bisserl sieht mir das Bild so aus, als sei es ein JPeg, das mit sehr hohem Qualitätsverlust gespeichert / verarbeitet wurde.
Was genau verbirgt sich hinter QRCodeBitmap?
Ein Bitmap?
Dann versuch es mal mit
Delphi-Quellcode:
Pict.Picture.Bitmap.Assign(QRCodeBitmap);
Oder
Delphi-Quellcode:
Pict.Picture.Bitmap.Assign(Nil); // Alternative zum fehlenden .Clear ...
Pict.Picture.Bitmap.Assign(QRCodeBitmap);

Ja, QRCodeBitmap ist vom Typ TBitmap.
Die Zuweisung klappte auch vorher schon und die Anpassung auf deinen Code brachte auch keinen Unterschied. Das gespeicherte Bild nach der Zuweisung sieht einwandfrei aus.
Im Ausdruck hingegen weiterhin diese Unschärfe, die wahrscheinlich durch Graustufen gedithtert (?) wird.

Wenn es zwischen sauberer Vorlage (Bitmap) und Ausdruck zu einer solchen Veränderung kommt, müsste Fastreport wohl das Bild neu aufbauen?
Kann man das irgendwo beeinflussen?

mikhal 23. Mär 2017 14:31

AW: Fastreport 5 VCL: Image nicht verzerren?
 
TPicture hat bei FastReport eine Property Stretched, die steht per Default auf True, setz die mal auf False

Edit: schon geschehen... habe ich übersehen
Edit2: HighQuality steht auf True?

Grüße
Mikhal

TiGü 23. Mär 2017 14:48

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Zitat:

Zitat von SearchBot (Beitrag 1365092)
Zitat:

Zitat von TiGü (Beitrag 1365039)
Sieht der Ausdruck in einer PDF auch so bescheiden aus?

Das ist ein Ausdruck auf ein Etikett, Wachs-Transfer oder so...
Mit PDF hab ichs nicht versucht, weil ich auf einem Etikett brauche :wink:

Ja, aber damit könnte man erstmal feststellen, ob der Drucker ein Problem macht oder irgendetwas davor.
Wenn das Bitmap in einer PDF oder einen normalen Laserdrucker gut ausschaut, hast du ja eher am hinteren Ende ein Problem.

haentschman 23. Mär 2017 15:31

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Moin...:P
Zitat:

Da Fastreport (in der bei 'Berlin' mitgeliefertern Version) selbst keine QR-Codes erzeugen kann
Die Kaufversion kann das schon. Da hättest du auch die Events dabei... :wink: Aktuell V5 incl. Märchensteuer: 230€

Kannst du mal die Demo ausprobieren ob die QR Codes für dich was sind.
https://www.fast-report.com/de/blog/71/show/

SearchBot 26. Mär 2017 21:02

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Zitat:

Zitat von mikhal (Beitrag 1365287)
Edit2: HighQuality steht auf True?

Am Image auf dem Report?
Die Eigenschaft heißt bei mir HightQuality - meinst du die? Oder habe ich noch eine andere übersehen?
Diese hier ändert nichts.

Ich gebe den QRCode jetzt auf XPS aus (hab an dem PC kein PDF-Drucker und auch keine Lust, das zu ändern ;-) ).
Im diesem "Ausdruck" ist der QRCode auch schon unscharf (graue Aura um die Module [Modul werden die schwarzen Punkte im QRCode genannt]), also daher kommen die "Flecken".

Scheinbar ist die Auflösung meines Bildes mit dem Code zu gering, daß Fastreport das Bild hochrechnet auf die anderen Elemente im Report, und es daher unscharf macht (obwohl es das Bild nicht stretchen soll).
Wie kann ich die Auflösung für die zur Laufzeit generierte Bitmap ändern? Oder gibt es einen anderen Grund?

Zitat:

Zitat von haentschman (Beitrag 1365297)
Moin...:P
Die Kaufversion kann das schon.

Näää - ich hab ja eine Lösung, nur noch die mangelnde Auflösung fixen.

blawen 26. Mär 2017 21:24

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe die gleiche Ausgangslage (QR-Code) und im Prinzip das gleiche vorgehen.
Allerdings klappt es bei mir ohne Probleme. Zum generieren des Bildes verwende ich die Zint-Bibliothek.

Delphi-Quellcode:
var
  PictureView: TfrxPictureView;

begin
  PictureView := frxReport1.FindObject('Picture1') as TfrxPictureView;
  PictureView.Picture := imgQR_Code.Picture;

SearchBot 27. Mär 2017 10:57

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Zitat:

Zitat von blawen (Beitrag 1365587)
Ich habe die gleiche Ausgangslage (QR-Code) und im Prinzip das gleiche vorgehen.
Allerdings klappt es bei mir ohne Probleme. Zum generieren des Bildes verwende ich die Zint-Bibliothek.

Ja, aber das ist kein QR-Code :) (Edit: so wie ich es brauche)
In deinem PDF sind die Module aber auch leicht angegraut, was bei (m)einem SW-Drucker zu unsauberen Rändern führt.
Beim richtigen QRC sind die Abstände zwischen Hell und Dunkel enger, daher habe ich größere Probleme.

Die Zint sieht interessant aus und ist durch die Komponenten vielleicht einfacher einzubinden; aber ich lese auch was von DLL, das wollte ich vermeiden (vielleicht bringe ich es aber nach meinem kurzen googeln auch nur durcheinander :| ).

Kann es sein, daß das Image in eine DPI-Falle geraten ist und ich vorbeugend etwas umrechen muss?

hstreicher 27. Mär 2017 11:30

AW: Fastreport 5 VCL: Image nicht verzerren?
 
mal in den Druckereinstellungen nachgesehen ob man da das Handling für Graustufen einstellen kann , evtl reicht es im Drucerktreiber auf Schwarz/Weiss
Beim meinem Zebra gibt es ein Tab Grauabstufung
und darunter Fehlerstreuung, Gescannt,Fein oder->Keine<-

Bei Seagull Treibern steht das unter Grafiken
Option Keine

mfg Hannes

blawen 27. Mär 2017 12:35

AW: Fastreport 5 VCL: Image nicht verzerren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von SearchBot (Beitrag 1365625)
Ja, aber das ist kein QR-Code
In deinem PDF sind die Module aber auch leicht angegraut, was bei (m)einem SW-Drucker zu unsauberen Rändern führt.
Beim richtigen QRC sind die Abstände zwischen Hell und Dunkel enger, daher habe ich größere Probleme.

Die Zint sieht interessant aus und ist durch die Komponenten vielleicht einfacher einzubinden; aber ich lese auch was von DLL, das wollte ich vermeiden (vielleicht bringe ich es aber nach meinem kurzen googeln auch nur durcheinander :| ).

Zugegeben, es ist nicht der selbe Code, aber die Thematik ist dieselbe.
Den angegrauten Rand kann ich im Original nicht bestätigen, dies hängt schätzungsweise mit dem Printscreen und der anschliessenden JPG-Umwandlung zusammen.
Bei mir setze ich keine DLL ein und die Umwandlung ist relativ simpel.

Ev. reicht die von Hannes genannte Anpassung aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 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