ALPHA_8 :Alpha のみ
ARGB_4444 :128
ARGB_8888 :256
RGB_565 :Alphaなし Bitmap.hasAlpha() は常に false になる
今気づいたけど、Bitmap って Parcelable だったんだ。
Bitmap を単一色で塗りつぶす
Resource から BitmapFactory.decodeResource(getResources(), R.id.bitmap1)
とかで作った Bitmap は immutable = 不変 なので、
eraseColor() とかするには、mutable な Bitmap をコピーして
作成しないといけない。
つまり、これはエラー(IllegalStateException)になる
Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.id.bitmap1);
bm1.eraseColor(Color.BLACK);
こっちは、エラーにならない
Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.id.bitmap1);
Bitmap bm2 = bm1.copy(bm1.getConfig(), true);
bm2.eraseColor(Color.BLACK);
Bitmap から .png .jpg ファイルを作成する
boolean Bimap.compress (Bitmap.CompressFormat format, int quality, OutputStream stream)
を使います。
format には、
Bitmap.CompressFormat.JPEG
or
Bitmap.CompressFormat.PNG
を指定し、
quality には 0 ~ 100 を指定します。普通は100?
stream には、圧縮したビットストリームを流し込む先
を指定します。
成功すると true が返ってきます。
あとは、stream を hogehoge.png とか hogehoge.jpg で
保存すればOK
Alpha値だけの Bitmap にする
Alpha値だけ抜き出した Bitmap を作成するには
Bitmap.extractAlpha()
を使います。
* Xperia ではこのメソッドは使えませんでした。
代わりに
Bitmap.copy(Bitmap.Config.ALPHA_8, true)
で Alpha値だけ抜き出した Bitmap が作れます
Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.id.bitmap1);
Bitmap bm2 = mb1.extractAlpha();
特定のXY座標の色を取得する
ある、XY座標の Color を取得するには
int Bitmap.getPixel (int x, int y)
を使います。
x の範囲は 0 ~ width - 1
y の範囲は 0 ~ height - 1
戻り値は argb Color です。
x, y が Bitmap の境界より大きい場合は
IllegalArgumentException が返ってきます。
0 件のコメント:
コメントを投稿