gpt4 book ai didi

android - 在一个垂直边上倾斜图像

转载 作者:行者123 更新时间:2023-11-29 01:34:55 26 4
gpt4 key购买 nike

我试图将左侧的图像“倾斜”10%。这样看起来好像转动了一点。我认为最简单的方法是创建一个自定义的“skewedimageview”,它扩展了 ImageView 并使用了覆盖的 setFrame 方法。所以更清楚一点:这就是我想要的 skewed image on left side vertical

但是虽然我尝试了很多可能的矩阵组合,并尝试设置setSkew (听起来这就是我想要的)。我尝试过定义和不定义枢轴点,但都没有用。我也不确定选择什么点作为轴心点:它应该是一个保持不变的点,但我认为在这个转换过程中有很多不变的点(完整的右侧和水平中心线)。

我也尝试过 mapPoints然后将左上角降低 5%,将右下角升高 5%,但这似乎也不起作用。

     @Override
protected boolean setFrame(int frameLeft, int frameTop, int frameRight, int frameBottom) {


Matrix matrix = getImageMatrix();

matrix.setSkew(1f,0.9f);

setImageMatrix(matrix);
return super.setFrame(frameLeft, frameTop, frameRight, frameBottom);
}

}

有没有人知道如何使用 setSkew 或 mapPoints 解决此问题以及最佳做法是什么?或者手动创建一个转换矩阵(但我认为这一定比使用这些方法难得多)。

编辑:根据 pskink 的建议我使用函数 setpoly2poly 如下:

 @Override
protected boolean setFrame(int frameLeft, int frameTop, int frameRight, int frameBottom) {
float height = frameBottom - frameTop;
float width = frameRight - frameLeft;
System.out.println("Height is "+height);
int dy=0.05*height;

Matrix matrix = getImageMatrix();
float[] startpoints = {0,0,0,height}; //{0,0} =top left, {0,height}= left bottom
float[] endpoints = {0,0+dy,0,height-dy}; //topleft 5% down, bottom left 5% up
matrix.setPolyToPoly(startpoints,0,endpoints,0,2);
setImageMatrix(matrix);
return super.setFrame(frameLeft, frameTop, frameRight, frameBottom);
}

它做了一些事情,但它做的主要事情是放大到图像的左上角……

最佳答案

我遇到了这个问题并找到了解决方案~!

Bitmap bitmap = addWhiteBorder(bitmapsrc, 2);
Matrix matrix2 = new Matrix();
int oldw = bitmap.getWidth();
int oldh = bitmap.getHeight();
float d_up = oldh / 20;
float d_down = d_up + 10;
float[] src2 = new float[] { 0, 0, oldw, 0, oldw,
oldh, 0, oldh };
float[] dst2 = new float[] { 0, d_up, oldw, 0,
oldw, oldh, 0, oldh - d_down };
matrix2.setPolyToPoly(src2, 0, dst2, 0,
src2.length >> 1);
Bitmap bMatrix2 = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(),
matrix2, true);
imBookCover.setImageBitmap(bMatrix2);

关于android - 在一个垂直边上倾斜图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28895311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com