【问题标题】:Glide crop image without image view没有图像视图的滑动裁剪图像
【发布时间】:2018-12-05 22:02:58
【问题描述】:

我正在尝试通过滑行在背景中设置 wallaper。一切正常,但应用的 wallaper 就像图像的角落一样。由于我在作业服务中运行它,我无法使用图像视图来缩放图像。是有任何方法可以在没有它的情况下裁剪图像。在 Glide 上使用 centerCrop() 进行了尝试,但无法正常工作。

@Override
public void onComplete(Photo photo) {

    String photoUrl = photo.getUrls().getRegular();
    Glide.with(getApplicationContext()).asBitmap().load(photoUrl)
        .apply(new RequestOptions().centerCrop()).into(new
    SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(@NonNull Bitmap resource,
        @Nullable Transition<? super Bitmap> transition) {
            WallpaperManager wallManager =
            WallpaperManager.getInstance(getApplicationContext());
            try {
                wallManager.clear();
                wallManager.setBitmap(resource);

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

【问题讨论】:

  • 阅读android.graphics.Canvas API 文档
  • 也许你在申请wallManager之前拥有的位图又名资源,你可以在位图中完成设置!我使用这种技术来减小图像和视频文件的大小,就像 whatsapp 或 facebook 一样!我认为这也适用于您的用例
  • 它就像我需要原始位图的中心到手机显示高度和宽度

标签: android android-glide android-wallpaper


【解决方案1】:

您可以在BitmapTransformation的回调方法处使用custom transformations裁剪位图。

transformation examples 有一些很好的参考资料,非常好用。

这是我使用 kotlin 的测试代码:

val photoUrl = "imageurl"
    val target = object : SimpleTarget<Bitmap>(450, 450) {
        override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
            imageView.setImageBitmap(resource)
        }
    }

    GlideApp.with(this@MainActivity).asBitmap().load(photoUrl)
        .apply(bitmapTransform(RoundedCornersTransformation(38, 0, RoundedCornersTransformation.CornerType.ALL)))
        .into(target)

【讨论】:

    猜你喜欢
    • 2016-05-04
    • 1970-01-01
    • 2017-05-22
    • 2015-05-30
    • 1970-01-01
    • 2023-03-22
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多