h2n*_*hia 5 android transformation bitmap matrix
我正在 Android 上使用位图,但在使用 4 个点选择位图上的区域时遇到问题。并非所有的 4 分都适合我。在某些情况下,结果只是一个空白位图而不是裁剪后的位图(如图所示)并且 logcat 中没有任何错误(甚至内存错误)。这是我用来进行转换的基本代码。
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.widget.ImageView;
public class CropImageActivity extends Activity {
private ImageView mCroppedImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.crop);
    setupViews();
    doCropping();
}
private void doCropping() {
    Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample);
    //target size
    int bitmapWidth = 400;
    int bitmapHeight = 400;
    Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    //This is one of bad quadangle.
    points[0] = 0;    //top-left.x
    points[1] = 0;    //top-left.y
    points[2] = 230;  //top-right.x
    points[3] = 100;  //top-right.y
    points[4] = 350;  //bottom-right.x
    points[5] = 350;  //bottom-right.y
    points[6] = 0;    //bottom-left.x
    points[7] = 350;  //bottom-left.y
    float[] src = new float[]{
            points[0], points[1],
            points[2], points[3],
            points[4], points[5],
            points[6], points[7]
    };
    float[] dsc = new float[]{
            0, 0,
            bitmapWidth, 0,
            bitmapWidth, bitmapHeight,
            0, bitmapHeight
    };
    Matrix matrix = new Matrix();
    boolean transformResult = matrix.setPolyToPoly(src, 0, dsc, 0, 4);
    canvas.drawBitmap(srcBitmap, matrix, null);
    mCroppedImageView.setImageBitmap(bitmap);
}
private void setupViews() {
    mCroppedImageView = (ImageView) findViewById(R.id.croppedImageView);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,4点坐标会影响画布绘制还是矩阵变换呢?任何帮助表示赞赏。
谢谢
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1910 次  |  
        
|   最近记录:  |