После долгих поисков я нашел «временное» решение в том же сообществе, а также спасибо за код от «слабого провода», представленный в том же посте.
Получение координат и ширины / высоты из матрицы
Идея проста, все, что мне нужно сделать, это удалить фоновый экран с масштабированного изображения путем обрезки. Код немного длинный, но у меня сработал.
Сначала получите оригинальный размер растрового изображения
float imgWidth = imgBitmap.getWidth()
float imgHeight = imgBitmap.getHeight()
Получите значения матрицы (функция масштабирования пинча, используемая в моем приложении, использует матричный «трюк») значений, используемых для масштабирования изображения и получения scaledWidth & scaledHeight исходного изображения.
float[] values = new float[9];
matrix.getValues(values);
float globalX = values[2];
float globalY = values[5];
float scaledWidth = values[0]*imgWidth;
float scaledHeight = values[4]*imgHeight;
// If zoomed Image gets out of screen, I'm trying to crop the image available in the screen by considering image from (0,0)
if(globalX<0)
globalX = 0;
if(globalY<0)
globalY = 0;
Наконец, захватить вид и обрезать фон
В моем случае ("finalView" - это имя пользовательского представления, в котором происходит масштабирование)
setDrawingCacheEnabled(false);
destroyDrawingCache();
finalView.setDrawingCacheEnabled(true);
Bitmap bm = Bitmap.createBitmap(finalView.getDrawingCache());
finalView.setDrawingCacheEnabled(false);
//Final Image Width & Height
int finalWidth = Math.min((int)width,(int)finalView.getWidth());
int finalHeight = Math.min((int)height,(int)finalView.getHeight());
// обрезать, чтобы получить масштабированное изображение
Bitmap finalBitmap = Bitmap.createBitmap(bm, (int)globalX, (int)globalY, finalWidth ,finalHeight);
Хотя это временное решение, оно работает для меня. Если есть какое-либо альтернативное решение, пожалуйста, опубликуйте его.