【问题标题】:How to corp a picture into any shape via a template in android?如何通过android中的模板将图片裁剪成任何形状?
【发布时间】:2016-06-16 12:38:02
【问题描述】:

我想知道是否可以将图片裁剪为任何其他形状,而不仅仅是正方形、矩形或圆形。 基本上我正在寻找的是,用户可以选择 png 文件的模板(已经存在)并将图片切割成该形状。

【问题讨论】:

  • 寻求帮助的问题必须包括期望的行为特定问题或错误以及重现所需的最短代码在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example
  • 嗯,这绝对是可能的......看看 Whatsapp 个人资料图片

标签: android image crop


【解决方案1】:

查看此代码:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final ImageView imageViewPreview = (ImageView) findViewById(R.id.imageview_preview);
    new Thread(new Runnable() {
        @Override
        public void run() {
            final Bitmap source = BitmapFactory.decodeResource(MainActivity.this.getResources(),
                    R.drawable.source);
            final Bitmap mask = BitmapFactory.decodeResource(MainActivity.this.getResources(),
                    R.drawable.mask);
            final Bitmap croppedBitmap = cropBitmap(source, mask);
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    imageViewPreview.setImageBitmap(croppedBitmap);
                }
            });
        }
    }).start();
}

private Bitmap cropBitmap(final Bitmap source, final Bitmap mask){
    final Bitmap croppedBitmap = Bitmap.createBitmap(
            source.getWidth(), source.getHeight(),
            Bitmap.Config.ARGB_8888);
    final Canvas canvas = new Canvas(croppedBitmap);
    canvas.drawBitmap(source, 0, 0, null);
    final Paint maskPaint = new Paint();
    maskPaint.setXfermode(
            new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
    canvas.drawBitmap(mask, 0, 0, maskPaint);
    return croppedBitmap;
}

}

主要功能是“cropBitmap”功能。基本上它接收两个位图,一个源和一个掩码,然后它使用掩码的形状“裁剪”源位图。 这是我的源位图: 这是掩码位图: 这是结果:

另外,看看这个精彩的演示,这也可能对你有帮助:Fun with Android shaders and filters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多