android - 使用 Picasso 和 OkHttp 更新/更改缓存位图

标签 android caching bitmap picasso okhttp

我目前正在使用 Picasso 和 OkHttp 进行位图缓存。我想要做的是检索特定的缓存位图,在其上绘制,然后将绘制在位图上的位图放回内存和磁盘缓存中。我的实现非常标准,我只是使用 Target 并将加载的位图添加到驻留在 GridView 中的自定义 ImageView。我一直在环顾四周,似乎找不到办法做到这一点。这些库甚至支持这样的东西吗?

最佳答案

Picasso 只是用于下载缓存和显示图像(具有转换、交叉淡入淡出等好处)而不用于编辑的库。您似乎所做的似乎超出了 picasso 的使用范围。

我想说的是,如果您愿意,您仍然可以使用 Picasso 下载图像,但是当您获得位图时,您的应用程序确实存储了修改后的版本。因此,当用户完成绘制时,您必须自己将其存储在本地文件中(如果是大图像,您还可以为 GridView 创建单独的较小缩略图)并使用此版本。要将更改的位图内容保存到文件中,您可以调用

outBitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);

您也可以使用 Picasso 将本地文件加载到您的 GridView 中:Picasso.with(context).load("fileUrl").into(mImageView);。因此,在您的代码中,您将检查是否有本地编辑版本并使用 Picasso 从本地文件加载它,否则使用 Picasso 从服务器加载它。

如果你想在服务器上保存图像,你可以在用户编辑后将它发送到服务器。然后 Picasso+OkHttp 会再次下载它(假设你更新了服务器上的 ETag 等 http 缓存属性)。

关于android - 使用 Picasso 和 OkHttp 更新/更改缓存位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331439/

相关文章:

android - Gboard 贴纸搜索未返回结果

android - 导入 Paypal 库

php - 点击后退按钮重新加载页面

java - 缓存信息以获得快速 http 响应的最佳选择

php - Symfony 4 一些用户无法登录,csrf token 无效,可能是 php session 问题,没有产生错误

android - Firebase Analytics 未跟踪我的应用屏幕名称 : Screen name (not set)

android - 使用 CollapsingToolbarLayout 时如何在 AppBarLayout 和滚动内容之间插入 LinearLayout

.net - 当我在 IIS7 中将 png 保存到 MemoryStream 时,GDI+ 中发生一般错误

java - 如何从多个位图中放大和缩小android Canvas 中的位图?

java - 旋转 Canvas 和绘制位图性能