使用Glide应用转换后保存图像

时间:2017-12-16 19:55:26

标签: android image android-glide

我有一个应用程序,我正在努力帮助我学习Android编程,我被卡住了。我正在从firebase存储桶加载图像,然后在使用Glide加载时将效果应用于该图像。现在我需要找到一种方法来保存该图像,并将效果应用于存储桶。我知道如何上传图片并将其保存到Firebase存储,我的问题是,在使用Glide应用效果后,我无法找到保存图像的方法。这是我现在正在做的一个简单的例子..

Glide.with(context).load(photo).apply(bitmapTranformation(new ColorFilterTransformation(Color.argb(100, 150, 0, 150))));

从Firebase存储加载图像并应用滤镜转换。有没有可能的方法然后应用该过滤器保存该图像?我曾尝试在github频道询问Glide-Transformations,我曾尝试在谷歌小组中询问Glide,但还没有得到任何回复。我真的希望有人知道如何做到这一点。我唯一可以想到的是,如果不可能尝试将过滤器数据保存在数据库中,那么每次有人加载该图像时我都必须重新应用过滤器。我无法看到这是一个很好的解决方案,因为最终我希望能够对图像应用多个转换,并尝试将该信息存储在数据库中,然后每次重新构建它似乎是错误的方式去对这个。 我将非常乐意展示更多代码,或者您可能需要的任何内容。谢谢你的帮助,我真的很感激。 另外,如果有人需要知道我正在使用哪个库来应用效果,那么就在这里...... Glide Transformations

1 个答案:

答案 0 :(得分:0)

如果这对其他人有帮助,那么Glide库是不可能的。唯一的方法是使用内置的android图像缓存并从中重绘图像,就像这样......

ImageView im = findViewById(R.id.imageView);
im.setDrawaingCacheEnabled(true);
im.buildDrawingCache();
Bitmap bm = im.getDrawaingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

然后,您可以使用

上传到Firebase
reference.putBytes(baos.toByteArray());

希望这对任何人都有帮助,花了我一段时间才想出这个。还有一件事,如果你想保存图像,然后替换它,添加效果,并保存它你需要调用" im.destroyDrawingCache()"压缩位图后。