public class ImageUtil { /** * 在图片上写入文本 * * @param path 图片路径 * @param isCompress 是否压缩 * @param msg 要写入的文本 */ public static void drawTextOnImage(String path, boolean isCompress, String... msg) { BitmapFactory.Options config = new BitmapFactory.Options(); config.inSampleSize = 6; config.inTempStorage = new byte[100 * 1024]; Bitmap bmp; if (isCompress) {//不压缩 bmp = BitmapFactory.decodeFile(path).copy(Bitmap.Config.ARGB_8888, true); } else {//压缩图片 bmp = BitmapFactory.decodeFile(path,config).copy(Bitmap.Config.ARGB_8888, true); } Canvas canvas = new Canvas(bmp); Paint paint = new Paint(); // 建立画笔 paint.setDither(true); paint.setFilterBitmap(true); int width = bmp.getWidth(); int height = bmp.getHeight(); Rect src = new Rect(0, 0, width, height); Rect dst = new Rect(0, 0, width, height); canvas.drawBitmap(bmp, src, dst, paint); float y = 0; for (String s : msg) { Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); textPaint.setTextSize(22f); textPaint.setTypeface(Typeface.SANS_SERIF); // 采用默认的宽度 textPaint.setTextSkewX(-0.5f); textPaint.setColor(Color.RED); textPaint.setTextAlign(Paint.Align.LEFT); Paint.FontMetrics fontMetrics = textPaint.getFontMetrics(); y += fontMetrics.bottom - fontMetrics.top; canvas.drawText(s, 0, y, textPaint); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); } FileOutputStream fos = null; try { fos = new FileOutputStream(path); bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } if (!bmp.isRecycled()) { bmp.recycle(); } } public static Bitmap drawTextToBitmap(Context gContext, int gResId, String gText) { Resources resources = gContext.getResources(); float scale = resources.getDisplayMetrics().density; Bitmap bitmap = BitmapFactory.decodeResource(resources, gResId); android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); // set default bitmap config if none if (bitmapConfig == null) { bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888; } // resource bitmaps are imutable, // so we need to convert it to mutable one bitmap = bitmap.copy(bitmapConfig, true); Canvas canvas = new Canvas(bitmap); // new antialised Paint Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); // text color - #3D3D3D paint.setColor(Color.RED); paint.setTextSize((int) (18 * scale)); paint.setDither(true); //获取跟清晰的图像采样 paint.setFilterBitmap(true);//过滤一些 Rect bounds = new Rect(); paint.getTextBounds(gText, 0, gText.length(), bounds); int x = 30; int y = 30; canvas.drawText(gText, x * scale, y * scale, paint); return bitmap; } }
Android在图片上添加文本
最新推荐文章于 2025-02-06 09:52:11 发布