public Bitmap
createBitmapForWatermark (Bitmap
src, Bitmap watermark) {
if
(src == null) {
return
null;
}
int
w = src.getWidth();
int
h = src.getHeight();
int
ww = watermark.getWidth();
int
wh = watermark.getHeight();
Bitmap
newb = Bitmap.createBitmap(ww, wh, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
Canvas
cv = new Canvas(newb);
Matrix
m = new Matrix();
m.postScale(1,
-1);//上下翻转
m.postRotate(-90);//左右翻转
Bitmap
newBitmap = Bitmap.createBitmap(src, 0, 0, w, h, m, true);
cv.drawBitmap(newBitmap,
new Rect(0, 0, newBitmap.getWidth(), newBitmap.getHeight()),new Rect(0, 0, ww, wh), null);
cv.drawBitmap(watermark,0,0,
null);// 前景图或水印
cv.save(Canvas.ALL_SAVE_FLAG);//
保存
//
store
cv.restore();//
存储
return
newb;
}
下面的方法则是用像素处理,速度会慢一点。
Bitmap
changePixel_180(Bitmap orgBitmap) {
int
pixels_width;
int
pixels_height;
pixels_width
= orgBitmap.getWidth();
pixels_height
= orgBitmap.getHeight();
Bitmap
newb = Bitmap.createBitmap(pixels_width, pixels_height, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
for
(int i = 0; i < pixels_height; i++) {
for
(int j = 0; j < pixels_width; j++) {
newb.setPixel(j,
i, orgBitmap.getPixel(j, pixels_height-1-i));
}
}
return
newb;
}
Bitmap
changePixel_90_r(Bitmap orgBitmap) {
int
pixels_width;
int
pixels_height;
pixels_width
= orgBitmap.getWidth();
pixels_height
= orgBitmap.getHeight();
Bitmap
newb = Bitmap.createBitmap(pixels_height, pixels_width, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
for
(int i = 0; i < newb.getHeight(); i++) {
for
(int j = 0; j < newb.getWidth(); j++) {
newb.setPixel(j,
i, orgBitmap.getPixel(pixels_width-1-i,j));
}
}
return
newb;
}
下面的方法则是用像素处理,速度会慢一点。
本文介绍了两种处理图片的方法:一种使用Canvas和Matrix实现图片的翻转与水印添加;另一种通过像素操作来实现180度翻转及90度右旋。前者适用于实时处理,后者虽然速度较慢但提供了更多控制细节。
5614

被折叠的 条评论
为什么被折叠?



