bitmap+文本生成新的bitmap的实现
程序员文章站
2022-07-04 22:30:41
注:参数content为生成二维码bitmap的内容,该二维码bitmap在和文本title组合生成一个新的bitmap ......
注:参数content为生成二维码bitmap的内容,该二维码bitmap在和文本title组合生成一个新的bitmap
package info.ecloud.merchant.util; import android.graphics.bitmap; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.rect; import com.google.zxing.barcodeformat; import com.google.zxing.encodehinttype; import com.google.zxing.qrcode.decoder.errorcorrectionlevel; import com.journeyapps.barcodescanner.barcodeencoder; import java.util.hashtable; public class saveimageutils { private static final string charset = "utf-8"; /** * 生成图片 加上title的图片 * @param content * @param title * @return */ public static bitmap createimage(string content,string title) { int picwidth = 520;//生成图片的宽度 int picheight = 565;//生成图片的高度 int titletextsize = 25; int textcolor = color.black; int qrwidth = 370; int qrheight = 370; int paddingtop = 5; int paddingmiddle = 20; int paddingbottom = 20; //最终生成的图片 bitmap result = bitmap.createbitmap(picwidth,picheight,bitmap.config.argb_8888); paint paint = new paint(); paint.setcolor(color.white); canvas canvas = new canvas(result); //先画一整块白色矩形块 canvas.drawrect(0,0,picwidth,picheight,paint); //画title文字 rect bounds = new rect(); paint.setcolor(textcolor); paint.settextsize(titletextsize); //获取文字的字宽高,以便将文字与图片中心对齐 paint.gettextbounds(title,0,title.length(),bounds); //画白色矩形块 int qrtop = paddingtop+titletextsize+paddingmiddle;//二维码的顶部高度 //画二维码 hashtable<encodehinttype, object> hints = new hashtable<>(); hints.put(encodehinttype.error_correction, errorcorrectionlevel.h); hints.put(encodehinttype.character_set, charset); hints.put(encodehinttype.margin, 5); bitmap image = null; try { barcodeencoder barcodeencoder = new barcodeencoder(); image = barcodeencoder.encodebitmap((string) content, barcodeformat.qr_code, 400, 400); } catch (exception e) { e.printstacktrace(); } paint.setcolor(color.black); canvas.drawbitmap(image,(picwidth-qrwidth)/2,qrtop,paint); //画文字 paint.setcolor(color.black); paint.settextsize(titletextsize); int line = 3; int texttop = qrtop+qrheight+paddingbottom;//地址的顶部高度 for (int i = 0 ; i < line ; i++){ string[] split = title.split("-"); paint.gettextbounds(title,0,split[i].length(),bounds); canvas.drawtext(split[i],picwidth/2-bounds.width()/2,texttop+i*titletextsize+i*5+bounds.height()/2,paint); } canvas.save(); canvas.restore(); return result; } }
上一篇: 近亲禁止结婚
下一篇: pyshp创建shp点文件的方法