[AS3 | Excel] ExcelのRGBの計算方法はAnimate(Flash)と違ってたよ

2017/12/28

こんにちは。きんくまです。

もう年末ですね。

さて、今回はExcelのRGBの計算方法についてです。誰トクなのかわからない情報なのですが、誰かの役に立つかもしれないので、、、。

ExcelのVBAでセルに色を塗るときに RGBを使って

Cells(1, 1).Interior.Color = RGB(255, 100, 30)

とかってできます。それで、RGBを使わずに数値に置き換えることも可能です。
ロング型の整数を入れてあげれば良いみたいです。ここではテキストをロング型に変換して設定しています。

'値は上のとイコールじゃないです
Cells(1, 1).Interior.Color = CLng("123456")

それで、AS3とかJavaScriptだとRGBを整数に変換するときはこうなると思います。

var red:int = 200;
var green:int = 100;
var blue:int = 30;
var rgb:int = red * 256 * 256 + green * 256 + blue;
//ビット演算を使うとこうゆう風にも書ける
var rgb:int = red << 16 | green << 8 | blue;

でも、調べてみるとExcelのRGBは計算方法が違っていました。
青(B)が16ビット分あがって、赤(R)はそのままなんですね。

var rgb:int = red + green * 256 + blue * 256 * 256;
//ビット演算を使うとこうゆう風にも書ける
var rgb:int = red | green << 8 | blue << 16;

ビットマップデータBitmapDataからExcelのRGB用のCSVテキストに変換する

というわけでビットマップデータからCSVに変換するやつを書いてみました。

function convertBitmapDataToText(bitmapData:BitmapData):String
{
    var csvTexts:Array = [];
    bitmapData.lock();
    for(var rowIndex:int = 0, rowLen:int = bitmapData.height; rowIndex < rowLen; rowIndex++){
        var rowTexts:Array = [];
        for(var columnIndex:int = 0, columnLen:int = bitmapData.width; columnIndex < columnLen; columnIndex++){
            var rgbInt:int = bitmapData.getPixel(columnIndex, rowIndex);
            /**
             * flashのRGBのintは Red << 16 | Green << 8 | Blue
             * だけどExcelのRGBのLongは Red | Green << 8 | Blue << 16
             * なのでそっちに変換する
             */
            var red:int = rgbInt >> 16 & 0xff;
            var green:int = rgbInt >> 8 & 0xff;
            var blue:int = rgbInt & 0xff;
            var excelRgbLong:int = red | green << 8 | blue << 16;
            rowTexts.push(excelRgbLong.toString());
        }
        //カンマ区切り
        var rowText:String = rowTexts.join(",");
        //行は\r\n区切り
        csvTexts.push(rowText + "\r\n");
    }
    bitmapData.unlock();
    return csvTexts.join("");
}

AIRで開発用のちょっとしたツールを作ってまして、出てきたメモでした。
ではでは。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

LINEスタンプ作りました!
毎日使える。とぼけたウサギ。LINEスタンプ販売中! 毎日使える。とぼけたウサギ

ページトップへ戻る