我正在尝试“转移”位图,但没有成功。通过“shift”,我的意思是:如果我有一个500x300并且我向右移动50个像素,结果应该是500x300位图,其中每个像素向左移动50个像素,并且50个最右边的像素是空白的。因此,新图像与旧图像相同,除了左侧被裁剪,并且空白区域被附加到右侧。下面的代码成功地裁剪左侧,但它不会在右侧产生一个空白区域,它只会产生一个更窄的位图:
Bitmap newBitmap = Bitmap.createBitmap(oldBitmap.getWidth(), m_CurrentBitmap.getHeight(), Config.ARGB_8888);
newBitmap = Bitmap.createBitmap(oldBitmap.getWidth(), deltaX, 0, oldBitmap.getWidth() - deltaX, oldBitmap.getHeight());
然后我尝试创建一个具有所需尺寸的新Bitmap,并手动设置像素(带偏移量)。但是,这仍会产生较窄的位图,缺少右侧的空白区域:
Bitmap newBitmap = Bitmap.createBitmap(oldBitmap.getWidth(), oldBitmap.getHeight(), Config.ARGB_8888);
int[] oldPixels = new int[(int)(oldBitmap.getWidth() - deltaX) * oldBitmap.getHeight()];
m_CurrentBitmap.getPixels(oldPixels, 0, (int) (oldBitmap.getWidth() - deltaX), (int)deltaX, 0, (int) (oldBitmap.getWidth() - deltaX), oldBitmap.getHeight());
newBitmap.setPixels(oldPixels, 0, (int) (oldBitmap.getWidth() - deltaX), 0, 0, (int) (oldBitmap.getWidth() - deltaX), oldBitmap.getHeight());
答案 0 :(得分:0)
编辑:好的,所以你基本上想要将旧位图的以下内容绘制到新的位图上。
您需要将OldBitmap
像素从deltaX
绘制到OldBitmap.Width
到NewBitmap
像素0
到NewBitmap.width
- {{ 1}}。这应该留下NewBitmap(deltaX
- NewBitmap.Width
到deltaX
)空白的右边距(假设它后面的画布是白色或任何“空白”颜色)。