Android给图片添加文字并保存

标签 android camera android-camera android-camera-intent

我想在我的图片中放置一个 Textiew 并保存它,但我不确定如何将文本插入到图片中。

我可以在我的图片上附加一张图片并保存它,它可以工作,但现在我想在图片中插入一个 Textiew

这是我的代码:

PictureCallback cameraPictureCallbackJpeg = new PictureCallback() 
{  
@Override
public void onPictureTaken(byte[] data, Camera camera) 
{
  // TODO Auto-generated method stub   
  Bitmap cameraBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

  wid = cameraBitmap.getWidth();
  hgt = cameraBitmap.getHeight();

  Bitmap newImage = Bitmap.createBitmap(wid, hgt, Bitmap.Config.ARGB_8888);
  Canvas canvas = new Canvas(newImage);
  canvas.drawBitmap(cameraBitmap, 0f, 0f, null);
  Drawable drawable = getResources().getDrawable(R.drawable.love);
  drawable.setBounds(20, 20, 260, 160);
  drawable.draw(canvas);

  File storagePath = new File(Environment.getExternalStorageDirectory() + "/MyPicture/"); 
  storagePath.mkdirs(); 

  File myImage = new File(storagePath,Long.toString(System.currentTimeMillis()) + ".jpg");

  try
  {
    FileOutputStream out = new FileOutputStream(myImage);
    newImage.compress(Bitmap.CompressFormat.JPEG, 80, out);


    out.flush();
    out.close();
  }
  catch(FileNotFoundException e)
  {
    Log.d("In Saving File", e + "");    
  }
  catch(IOException e)
  {
    Log.d("In Saving File", e + "");
  }

  camera.startPreview();

  drawable = null;

  newImage.recycle();
  newImage = null;

  cameraBitmap.recycle();
  cameraBitmap = null;
}
;
};

最佳答案

如果您只想要“文本”,而不一定是 TextView,您可以使用 drawText() 直接在 Canvas 上绘制文本.

只需将其更改为:

  Canvas canvas = new Canvas(newImage);
  canvas.drawBitmap(cameraBitmap, 0f, 0f, null);
  canvas.drawText("some text here", x, y, myPaint);

  ...

  newImage.compress(Bitmap.CompressFormat.JPEG, 80, out);

如果您确实需要它是一个TextView,您可以将 View 转换为位图,然后使用drawBitmap() 在 Canvas 上绘制它。参见 this answer有关如何转换它的示例。

关于Android给图片添加文字并保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18002503/

相关文章:

android - 主线程上的 RxJava onCompleted 和 onTerminate

xcode - Opencv相机姿态估计

c++ - 如何估计相机从场景中拍摄优质图像的曝光时间

android - 使用android相机更改关键帧间隔

Android 相机 Intent 仅在平板电脑中失败

android - 在 Android 的 Nutiteq 3D 中绘制路线

android - 您的项目的 SDK 版本 >= 33.0.0,但 expo 包版本似乎更旧

android - 用户退出 : clearing the default Google account does not cause the account picker to show up in Android app

iphone - UIImagePickerController 基于旋转的相机 View 叠加

Android在保存到SD卡之前拍照并调整大小