0

I have an image in an imageView which i want to write some labels on it and then send it over social media or mail. Is their any way to send the image with the text on top of it (Text overlay on image) ??

Thanks in advance

tahsinRupam
  • 6,325
  • 1
  • 18
  • 34
Ahmad Mahmoud Saleh
  • 169
  • 1
  • 4
  • 15
  • I think this one help to achive the task [link](https://stackoverflow.com/questions/45826296/save-imageview-with-textview-to-bitmap) – Benjith Mathew Dec 14 '17 at 11:54

1 Answers1

1

Try to draw text on bitmap following this

 public 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.rgb(61, 61, 61));
  // text size in pixels
  paint.setTextSize((int) (14 * scale));
  // text shadow
  paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);

  // draw text to the Canvas center
  Rect bounds = new Rect();
  paint.getTextBounds(gText, 0, gText.length(), bounds);
  int x = (bitmap.getWidth() - bounds.width())/2;
  int y = (bitmap.getHeight() + bounds.height())/2;

  canvas.drawText(gText, x, y, paint);

  return bitmap;
}
islamdidarmd
  • 725
  • 5
  • 19
  • First, thanks for that . Second, i already have the image view and text views on top of it already, I want to export it as one image while keeping the layout of the text views at their places, would this work for my case ?? – Ahmad Mahmoud Saleh Dec 14 '17 at 11:52
  • No. You need to get the drawing cache of your view. Follow this answer here https://stackoverflow.com/questions/10988847/view-getdrawingcache-only-works-once – islamdidarmd Dec 14 '17 at 12:02
  • Could you provide more details please?? – Ahmad Mahmoud Saleh Dec 14 '17 at 12:07