Наложение логотипа и деталей на изображение после захватаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Наложение логотипа и деталей на изображение после захвата

Сообщение Anonymous »

Я пытаюсь добиться результата, похожего на фото ниже. Я хочу отображать информацию о файле, адрес и логотип в правом верхнем углу изображения. Я разработал приложение, которое позволяет пользователям делать фотографии и добавлять к ним имя файла, адрес и логотип, но результат оказался не таким, как я ожидал. Текст занимает слишком много места на отснятой фотографии.
Если у вас есть решение, позволяющее добиться результата, похожего на нужную фотографию, буду очень признателен .
Спасибо,
Николас
Вывод из моего приложения
Изображение

Изображение

Ожидаемый результат
Я использую библиотеку opencv в Android Studio для архивирования запроса, для которого я попробовал этот код
public static Bitmap addTextToImage(Bitmap bitmap, String filename, String address) {
Mat mat = new Mat();
Utils.bitmapToMat(bitmap, mat);

Scalar textColor = new Scalar(120,156,181);

int fontFace = Imgproc.FONT_HERSHEY_SIMPLEX;
double fontScale = 0.21;
int thickness = 1;
int padding = 5;

String text = filename + " Adresse: " + address;

Size textSize = Imgproc.getTextSize(text, fontFace, fontScale, thickness, new int[1]);

// Position du texte : en bas à droite
Point textPosition = new Point(
mat.cols() - textSize.width - padding,
mat.rows() - padding
);

// Dessiner un rectangle semi-transparent derrière le texte
Rect textBackground = new Rect(
(int) (textPosition.x - padding),
(int) (textPosition.y - textSize.height - padding),
(int) (textSize.width + padding * 2),
(int) (textSize.height + padding)
);

Scalar backgroundColor = new Scalar(255, 255, 255, 150);
Imgproc.rectangle(mat, textBackground.tl(), textBackground.br(), backgroundColor, Imgproc.FILLED);

Imgproc.putText(mat, text, textPosition, fontFace, fontScale, textColor, thickness);

// Convertir à nouveau Mat en Bitmap
Bitmap resultBitmap = Bitmap.createBitmap(mat.cols(), mat.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mat, resultBitmap);

return resultBitmap;
}

Код изображения сделан:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Camera.REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {

Location lastLoc = loc.getLastLoc();

if(lastLoc == null)
{
return;
}

String filename = generateFileName();
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
Bitmap finalBitmap = PhotoAnnotator.addTextToImage(imageBitmap, filename, mSelectedAddress);

saveImageToGallery(filename, finalBitmap, lastLoc);
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... er-capture
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»