Используйте приведенный ниже код для достижения ваших требований
Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.yourimage); // the original file yourimage.jpg i added in resources
Bitmap dest = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
String yourText = "My custom Text adding to Image";
Canvas cs = new Canvas(dest);
Paint tPaint = new Paint();
tPaint.setTextSize(35);
tPaint.setColor(Color.BLUE);
tPaint.setStyle(Style.FILL);
cs.drawBitmap(src, 0f, 0f, null);
float height = tPaint.measureText("yY");
float width = tPaint.measureText(yourText);
float x_coord = (src.getWidth() - width)/2;
cs.drawText(yourText, x_coord, height+15f, tPaint); // 15f is to put space between top edge and the text, if you want to change it, you can
try {
dest.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/sdcard/ImageAfterAddingText.jpg")));
// dest is Bitmap, if you want to preview the final image, you can display it on screen also before saving
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Вы должны использовать указанные ниже разрешения в файле манифеста.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Для моего устройства путь /sdcard
для доступа к внешней SD-карте может отличаться для других устройств. Некоторые устройства могут иметь /mnt/sdcard
, может быть, это для внутренних SD-карт. Просто проверьте это, прежде чем использовать этот код.
На самом деле я написал приведенный выше код для какого-то другого вопроса, который требовал отметки времени на фотографии после съемки с камеры. Я дал вам то же решение с небольшими изменениями для вашего конкретного требования.
Я надеюсь, вы можете это понять. Если у вас есть какие-либо сомнения относительно кода, не стесняйтесь спрашивать.