Seite 1 von 1

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

Verfasst: 13. März 2017 11:01
von navCH
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

Re: CC: mit C/AL Bitmap Bild verkleinern

Verfasst: 13. März 2017 12:20
von winfy
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

Verfasst: 13. März 2017 12:27
von navCH
Danke winfy.
Das war der Hinweis den ich brauchte.

Beste Grüße
Christian