我需要下载非常大的5mb +图像。
我知道在显示图像之前缩放图像以节省手机内存但是仍然存在下载大图像的问题。
如何下载50%缩小版图像,而不是下载完整图像然后缩放图像?
答案 0 :(得分:3)
您必须从下载的服务器支持。
如果服务器不是您的,您需要查找该服务器的文档(或反向工程)。
如果服务器是您的,则取决于使用的技术。查找您正在使用的特定服务器端技术的图像处理库。
如果是imgur.com,
Imgur允许您每个IP每小时拨打500个电话,如果您已注册,则可拨打1000个电话。上传次数十倍。
此处记录了有关图像的元数据:http://api.imgur.com/resources_anon#image_hash。访问api.imgur.com/2/image/[hash].xml
或api.imgur.com/2/image/[hash].json
,然后从响应中选择image.links.small_square
(90x90)或image.links.large_thumbnail
(?x640)。请注意,imgur还为其主页生成缩略图(160x160)。这些网址似乎是i.imgur.com/[hash]b.jpg
指向大图片的链接为i.imgur.com/[hash].jpg
,因此,如果您的链接为http://i.imgur.com/xDpEF.jpg
或http://imgur.com/xDpEF
,那么xDpEF
就是您需要的哈希值。
答案 1 :(得分:2)
当Web服务器未提供缩小版本时,无法下载某些图像的缩小版本。
您需要在托管它们的网络/服务器上扩展它们。所以问题不是java / android,而是在网络服务器上,并依赖于它。
答案 2 :(得分:1)
除非您的服务器在下载之前支持缩小图像,否则您不能这样做。如果服务器没有该选项,那么最好的选择是在使用BitSampleSize中的BitmapFactory.Options从流中读取图像时缩小它。
答案 3 :(得分:0)
先生,这是不可能的,因为如果您从任何服务器下载它,那么服务器必须具有许多形式的缩放图像,如50%比例或25%缩放。因此,只有当您从下载图像的位置维护服务器时才有可能,并且在后端您提供了一些缩放图像的方法。
如果您从任何服务器下载图像,则无法从服务器获取缩放图像,而无需任何后端程序来缩放图像。
答案 4 :(得分:0)
您需要将图像下载到文件中,然后使用BitmapFactory
和BitmapFactory.Options
来确定图像的大小。根据图片大小,计算您想要缩放的数量,然后再次使用BitmapFactory
(使用Options
)加载图片的缩放版本。
答案 5 :(得分:0)
这取决于服务器,服务器应支持缩小图像。
答案 6 :(得分:0)
除了其他答案之外,有一种解决方案可以在服务器端没有特殊软件的情况下工作;
如果图像以JPEG格式存储在服务器上并使用隔行扫描/逐行扫描模式,您可以部分下载它们以创建缩略图。
此特殊模式旨在在下载时查看预览图像。压缩预览图像可能会产生可用作缩略图的图像。
但是我不知道一个支持缩略图加载的库。