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