2013年5月9日木曜日

Bitmap画像をLibO Calcのセルの背景色で表現するマクロ

BMPの仕様をちゃんと調べたり、座標合わせたりすんのが、結構大変だったのでメモ。
UbuntuのLibreOffice Calcで動作確認してます。
利用する画像は、あらかじめGIMPとかで、サイズを50 * 50ピクセルに拡大・縮小し、24ビットのBMP画像として保存しておきます。

Sub Main
  oSheet = ThisComponent.getSheets().getByName("Sheet1")
 
  ' セルのサイズ調整
  For i = 0 To 49
    oSheet.getColumns().getByIndex(i).Width = 500
    For j = 0 To 49
      oSheet.getRows().getByIndex(j).Height = 500
    Next j
  Next i
 
  ' bmpファイルの読み込み
  sURL = ConvertToURL("/home/tani/デスクトップ/testbmp.bmp")
  Dim buf(FileLen(sURL) - 1) As Byte
  Open sURL For Binary As #1
  Get #1, , buf
  Close #1
 
  ' RGBデータをセルの背景色に設定
  For i = 0 To 49
    counter = counter + 2
    For j = 0 To 49
      oCell = oSheet.getCellByPosition(49 - j, i)
      r = buf(Ubound(buf) - counter)
      counter = counter + 1
      g = buf(Ubound(buf) - counter)
      counter = counter + 1
      b = buf(Ubound(buf) - counter)
      counter = counter + 1
      oCell.CellBackColor = rgb(r, g, b)
    Next j
  Next i
End Sub
実行すると、こんな感じ。


0 件のコメント: