Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.
Seite 1 von 2  1 2      

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