[Gelöst] CC: mit C/AL Bitmap Bild verkleinern

13. März 2017 11:01

Hallo Zusammen.

ich importiere durch einen Report mehrere Bitmap Bilder. Diese möchte ich im C/AL Code verkleinern.
Die Abmessungen sind ca. 300 x 300 Pixel und Größe liegt bei 263 KB. Ich möchte die Größe auf die Hälfte verkleinern.

Ich streame die Bilder in Excel, was auch soweit funktioniert, aber die Bilder sind zu groß:

Code:
IF Picture.HASVALUE THEN BEGIN
    Picture.CREATEINSTREAM(streamIn);
    outFile.CREATE(ExcelExport+"No."+'.bmp');
    outFile.CREATEOUTSTREAM(streamOut);
    COPYSTREAM(streamOut, streamIn);
    outFile.CLOSE;
END;


Ich definiere Höhe und Breite der Zellen für das Bild und evaluiere die Koordinaten für das Shape:
Code:
  IF EXISTS(ExcelExport+"No."+'.bmp') THEN BEGIN
      xlRange := Sheet.Range('B'+q);
      xlRange.RowHeight := 235;
      xlRange.ColumnWidth := 50;
      EVALUATE(PosX, FORMAT(xlRange.Left));
      EVALUATE(PosY, FORMAT(xlRange.Top));     
                                                   
      xlShape:=Sheet.Shapes.AddPicture(ExcelExport+
      "No."+'.bmp',1, 1,PosX+5,PosY+5,-1,-1);
      xlShape.Select;
      xlShape.Placement(1);
      MODIFY;
End;


Kann ich hierbei schon die Größe des Bildes manipulieren?


Beste Grüße
Christian
Zuletzt geändert von navCH am 13. März 2017 12:28, insgesamt 1-mal geändert.

Re: CC: mit C/AL Bitmap Bild verkleinern

13. März 2017 12:20

Hallo Christian,

siehe https://msdn.microsoft.com/de-de/library/office/ff198302.aspx

Statt Parameter Width und Height auf -1 zu setzen, einfach die Pixelanzahl für Höhe und Breite angeben. (z.B. ,150,150)

Da die Bilder alle 300x300 Pixel habe ist das sogar super für dich, da du damit automatisch keine Verzerrung hast. :wink:
Ansonsten wäre das Problem das sich das Bild verzerren könnte, wenn du die Pixel nicht relativ zur konkreten Bildgröße berechnen kannst.

Gruß,
winfy

Re: CC: mit C/AL Bitmap Bild verkleinern

13. März 2017 12:27

Danke winfy.
Das war der Hinweis den ich brauchte.

Beste Grüße
Christian