Как нарисовать растровое изображение в другом, но в заданный четырехугольник (не обязательно прямоугольник)?
Предположим, у меня есть 2 растровых изображения. Один - smallBitmap, а другой - bigBitmap.
Я хочу нарисовать весь smallBitmap в largeBitmap, но только в части largeBitmap, и не в прямом прямоугольнике, а вчетырехугольник вместо.
Я думаю, что эскиз лучше всего описывает то, что я имею в виду:
Примером такого сценария является наклонное изображение смартфона (например,этот или жеэтот), что вам нужно поместить скриншот в его экран.
Входные данные: smallBitmap, largeBitmap, «четырехугольные» координаты largeBitmap (куда поместить smallBitmap).
«Четырехсторонний» таблицы LargeBitmap имеет только 4 координаты, и прямоугольник не обязательно. Это может быть, например, параллелограмм или трапеция.
Мне нужно масштабировать smallBitmap в четырехугольник внутри largeBitmap, а также поддерживать масштабирование по центру, чтобы оно не искажалось
Мне также нужно знать, как обращаться с текстами одинаково, но я думаю, что это примерно то же самое решение.
Вот что я пробовал, но даже не масштабируется:
//mBigBitmap: size is 720x1280
//mSmallBitmap: size is 720x720
mLeftTop = new Point(370, 358);
mRightTop = new Point(650, 384);
mLeftBot = new Point(375, 972);
mRightBot = new Point(660, 942);
Canvas canvas = new Canvas(mBigBitmap);
final Matrix matrix = new Matrix();
matrix.setPolyToPoly(new float[]{0, 0,
mBigBitmap.getWidth() - 1, 0,
0, mBigBitmap.getHeight() - 1,
mBigBitmap.getWidth() - 1, mBigBitmap.getHeight() - 1},
0,
new float[]{mLeftTop.x, mLeftTop.y,
mRightTop.x, mRightTop.y,
mLeftBot.x, mLeftBot.y,
mRightBot.x, mRightBot.y
}
, 0, 4);
canvas.drawBitmap(mSmallBitmap, matrix, new Paint());