Android:padding留下了一个白色的位图

时间:2011-08-05 13:26:10

标签: java android colors bitmap padding

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

5 个答案:

答案 0 :(得分:23)

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

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;
}

答案 1 :(得分:3)

if(@$insuranceType_list){
  foreach($insuranceType_list as $k=>$l){
    $insuranceType_list[$k]->version_list = $this->mdl_quotation_template->getConditionTemplates('insurance_type_id='.$l->id);
  }
}

答案 2 :(得分:0)

你可能想看这里:

http://download.oracle.com/javase/1.4.2/docs/api/java/awt/image/BufferedImage.html

您可能想要使用的方法是:getHeight()然后您知道要设置多少像素并迭代10列

和setRGB(int x,int y,int RGB)设置像素

答案 3 :(得分:0)

这是RxJava的kotlin扩展功能,可以完成此任务。我还没有完全测试过,但根据之前的答案进行了组合

fun Bitmap.pad(top: Float = 0F, bottom: Float = 0F, left: Float = 0F, right: Float = 0F): Single<Bitmap> {
    return Single.create<Bitmap> { emitter ->
        val output = Bitmap.createBitmap(
            (width + left + right).toInt(),
            (height + top + bottom).toInt(),
            Bitmap.Config.ARGB_8888
        )
        val canvas = Canvas(output)

        canvas.drawBitmap(this, left, top, null)

        emitter.onSuccess(output)
    }.subscribeOn(Schedulers.computation())
}

我认为协程版本只会是

suspend fun Bitmap.pad(top: Float = 0F, bottom: Float = 0F, left: Float = 0F, right: Float = 0F): Bitmap {
    val output = Bitmap.createBitmap(
        (width + left + right).toInt(),
        (height + top + bottom).toInt(),
        Bitmap.Config.ARGB_8888
    )
    val canvas = Canvas(output)

    canvas.drawBitmap(this, left, top, null)

    return output
}

答案 4 :(得分:0)

我只是这样做是为了全方位填充。希望它能帮助某人。 https://stackoverflow.com/a/44060669/6480433https://stackoverflow.com/a/6957333/6480433这些答案的组合。

Bitmap outputimage = Bitmap.createBitmap(Src.getWidth() + padding_x,Src.getHeight() + padding_y, Bitmap.Config.ARGB_8888);
        Canvas can = new Canvas(outputimage);
        can.drawBitmap(Src, padding_x, padding_y, null);

        Bitmap output = Bitmap.createBitmap(outputimage.getWidth()+padding_x, outputimage.getHeight() + padding_y, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
        canvas.drawBitmap(outputimage, 0, 0, null);    
  return output;