2011-08-05 49 views
6

如何在位图左侧设置全部白色的10行? 我有一个位图,必须填充在左侧。我认为我可以创建一个新的图像迭代旧的getpixel每个位置和setpixel新的(白色或彩色)比返回新的位图...这是错误的? 有什么建议吗?非常感谢!Android:填充留下白色的位图

回答

16

您可以改为使用额外的填充像素数创建一个新的位图。 将其设置为画布位图,并使用所需的颜色对整个图像进行着色,然后复制位图。

public Bitmap pad(Bitmap Src, int padding_x, int padding_y) { 
    Bitmap outputimage = Bitmap.createBitmap(Src.getWidth() + padding_x,Src.getHeight() + padding_y, Bitmap.Config.ARGB_8888); 
    Canvas can = new Canvas(outputimage); 
    can.drawARGB(FF,FF,FF,FF); //This represents White color 
    can.drawBitmap(Src, padding_x, padding_y, null); 
    return outputimage; 
} 
+0

完美!谢谢..还有一个问题..对于X偏移你的意思是填充后留下的第一个像素? – Jed84

+0

可以说我有一个尺寸位图(W256,H104),这将能够通过在顶部和底部均匀添加空白而不拉伸图像来制作此图像(W256,H128)? – Pierre

+0

不错,但它只是将位图添加到位图的顶部和左侧。没有发现所有4边(顶部,左边,右边,底部)。 –

0
public Bitmap addPaddingTopForBitmap(Bitmap bitmap, int paddingTop) { 
    Bitmap outputBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight() + paddingTop, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(outputBitmap); 
    canvas.drawColor(Color.RED); 
    canvas.drawBitmap(bitmap, 0, paddingTop, null); 
    return outputBitmap; 
} 

public Bitmap addPaddingBottomForBitmap(Bitmap bitmap, int paddingBottom) { 
    Bitmap outputBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight() + paddingBottom, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(outputBitmap); 
    canvas.drawColor(Color.RED); 
    canvas.drawBitmap(bitmap, 0, 0, null); 
    return outputBitmap; 
} 


public Bitmap addPaddingRightForBitmap(Bitmap bitmap, int paddingRight) { 
    Bitmap outputBitmap = Bitmap.createBitmap(bitmap.getWidth() + paddingRight, bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(outputBitmap); 
    canvas.drawColor(Color.RED); 
    canvas.drawBitmap(bitmap, 0, 0, null); 
    return outputBitmap; 
} 

public Bitmap addPaddingLeftForBitmap(Bitmap bitmap, int paddingLeft) { 
    Bitmap outputBitmap = Bitmap.createBitmap(bitmap.getWidth() + paddingLeft, bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(outputBitmap); 
    canvas.drawColor(Color.RED); 
    canvas.drawBitmap(bitmap, paddingLeft, 0, null); 
    return outputBitmap; 
}