2011-08-05 53 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; 
}