Sử dụng mã dưới đây để đạt được yêu cầu của bạn
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();
}
Bạn phải sử dụng dưới sự cho phép trong file manifest.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Đối với thiết bị của tôi, đường dẫn là /sdcard
để truy cập thẻ SD bên ngoài, nó có thể khác nhau cho các thiết bị khác. Một số thiết bị có thể có /mnt/sdcard
có thể là dành cho thẻ sd nội bộ. Chỉ cần kiểm tra nó trong khi trước khi sử dụng mã này.
Thực ra tôi đã viết mã trên cho một số câu hỏi khác, yêu cầu đóng dấu thời gian trên ảnh sau khi chụp từ máy ảnh. Tôi đã cung cấp cho bạn giải pháp tương tự với một chút sửa đổi cho yêu cầu cụ thể của bạn.
Tôi hy vọng bạn có thể hiểu điều này. Nếu bạn có bất kỳ nghi ngờ về mã cảm thấy tự do để yêu cầu.
Nguồn
2012-02-03 07:33:41
có nghĩa là bạn muốn thêm văn bản trên một file ảnh? –
Tôi có một hình ảnh (.jpg) và muốn thêm văn bản của người dùng ở trung tâm trên cùng và tạo một jpg mới với văn bản bao gồm – Addev
kiểm tra câu trả lời của tôi. –