Я пытаюсь получить растровое изображение из TextView следующим образом:
private Bitmap getBitmapFromView(View view) {
Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
view.draw(canvas);
return returnedBitmap;
}
Но returnBitmap содержит растровое изображение TextView с нежелательным контуром, см. картинку из Android Studio Debugger. Также я попытался использовать ту же функцию, но применил returnBitmap к ImageView, и у нее нет такого контура. Я не понимаю, как это можно исправить.
УПД. Мой макет TextView:
<TextView
android:id = "@+id/bitmaptext"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_margin = "4dp"
android:background = "@android:color/transparent"
android:textColor = "@color/white"
android:textSize = "18sp"
tools:text = "test"
tools:textColor = "@color/white" />
УПД2. Вот пример проекта: https://github.com/khoben/test-android, сам битмап имеет контур, а в ImageView его нет. Мне нужно изображение без этого контура.
УПД3. Хочу рисовать битмапы из texview на видео, но обводка портит все планы (рис.).
UPD4. Я должен сказать, что проблема возникла, когда изображение из getBitmapFromView() нарисовано на видео через OpenGL, и причиной был неправильный режим наложения. Ссылка на подробный ответ.
Передайте свой TextView в "getBitmapFromView".
public static Bitmap getBitmapFromView(View view) {
view.setDrawingCacheEnabled(true);
Bitmap returnedBitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
return returnedBitmap;
}
Добавьте свое текстовое представление в макет, создайте этот макет, а затем передайте этот макет этой функции.
попробуйте это: <RelativeLayout android:id = "@+id/canvasView" android:layout_width = "200dp" android:layout_height = "150dp" android:background = "@color/black"> <TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "10dp" android:gravity = "center" android:text = "TEXT" android:textColor = "@color/white" android:textSize = "18sp" /> </RelativeLayout >
Я добавил разметку xml на вопрос. Вот пример проекта github.com/khoben/test-android , github.com/khoben/test-android/blob/master/app/src/main/java/… если здесь установить точку останова, то можно увидеть растровое изображение непосредственно в отладчике
На самом деле, черная рамка изображения в отладчике Android возникла из-за того, что полупрозрачные пиксели вокруг букв и параметр смешивания по умолчанию дают в результате черный цвет (glClearColor был установлен на черный цвет). Также OpenGL делает то же самое.
Вот несколько советов по OpenGL:
Отрегулируйте параметры смешивания (в моем случае работает):
GLES20.glEnable(GL_BLEND);
GLES20.glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
Убедитесь, что оверлей рисовал на вашем фоне, например. не на очищенном фоне FBO.
Точно такой же результат