Я создаю приложение, которое делает снимок с помощью камеры, затем добавляю текст к реальному изображению.Поэтому я могу поделиться изображением, и в него будет встроен текст.Я пробовал много разных подходов, но ни один не работает.Ниже моя последняя попытка сохранить изображение, но без встроенного текста.Должен быть более элегантный метод, чем создание растрового изображения, рисование на нем холста, а затем преобразование его в выходной поток для его сохранения.Проведя слишком долгие (дни) поиск учебников и взломав их кусочки, есть ли у кого-нибудь совет манипулировать захваченным изображением и сохранять его на SD-карту?Должен ли я сохранить изображение, затем прочитать его и манипулировать им или манипулировать им перед сохранением?
private PictureCallback mPicture = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap photo = BitmapFactory.decodeByteArray(data, 0, data.length).copy(Config.RGB_565, true);
Canvas canvasView = new Canvas(photo);
Paint paint = new Paint();
paint.setTextSize(52);
paint.setColor(Color.GREEN);
canvasView.drawText("Test Text To Add", 0, 0, paint);
File pictureFile = getOutputMediaFile();
if (pictureFile == null){
Log.d(logTag, "Error creating media file, check storage permissions");
releaseCamera();
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
photo.compress(CompressFormat.PNG,100, bos);
byte[] bitmapdata = bos.toByteArray();
fos.write(bitmapdata);
fos.close();
releaseCamera();
} catch (FileNotFoundException e) {
Log.d(logTag, "File not found: " + e.getMessage());
releaseCamera();
} catch (IOException e) {
Log.d(logTag, e.toString());
releaseCamera();
}
}
};