java-压缩图像以上传到Android中的服务器的过程

java-压缩图像以上传到Android中的服务器的过程,第1张

概述我想编写自己的代码来压缩图像,然后再将其上传到服务器.我看到过很多关于SO的帖子,例如this,也有很多其他的帖子,但是到处都只有代码示例.实际上没有任何地方解释它.我无法从给定的代码中了解.我只想了解压缩图像的总体方法,这样我就可以开始自己编写代码了.我不是在寻找代码,只

我想编写自己的代码来压缩图像,然后再将其上传到服务器.

我看到过很多关于SO的帖子,例如this,也有很多其他的帖子,但是到处都只有代码示例.实际上没有任何地方解释它.我无法从给定的代码中了解.

我只想了解压缩图像的总体方法,这样我就可以开始自己编写代码了.

我不是在寻找代码,只是在寻找一个人压缩图像所需要遵循的步骤. (就像在编写程序之前编写算法一样,即伪代码)

解决方法:

我认为Chetan Joshi的答案是迄今为止最接近的答案.但是要进一步解释,

“压缩”图像和“缩放”(调整大小)图像是不同的.由于您仅想在上传到服务器时减少网络上的带宽(kb / Mb),因此您最有可能谈论“缩放”,因为这将对图像的大小产生最大的影响.

请注意,与其他答案一样,AndroID也需要使用Bitmaps.您需要使用与位图关联的API调用来执行所需的 *** 作.

初始点:

如果您允许您的应用使用相机拍摄照片或从图库中选取,则会获得一个Uri,该Uri允许您打开inputStream,如下所示:

inputStream is = getContext().getContentResolver().openinputStream(photoUri);

那是第一步.下一部分是您想要这样的伪代码:

>获取照片/选定图片的inputStream.这只是代表图像的字节流.
>使用BitmapFactory.decodeStream(inputStream src)将流解码为Bitmap
>使用Bitmap.createScaledBitmap(src,dstWIDth,dstHeight,filter);缩放(调整大小)位图.您必须确定自己想要的目标宽度和目标高度.请参阅下一组伪代码.
>使用imageFormat.getBitmapCompressFormat()(输出100)压缩位图,其中输出是ByteArrayOutputStream的实例
>现在可以调用output.toByteArray();.获取字节.
>字节就是您要发送到服务器的字节.

请注意有关如何选择目标宽度和高度以缩放至的信息:

>确定最大高度和最大宽度,例如240 x240.您将把它与位图的实际高度和实际宽度进行比较.
>如果过高(实际高度>最大高度),请计算最大高度/实际高度的缩放比例
>如果宽度太大(实际宽度>最大宽度),请计算最大宽度/实际宽度的缩放比例
>您的实际缩放比例是这两个缩放比例中的最小值
>返回实际高度*比例因子和实际宽度*比例因子

总的来说,高层流程是这样的:

>打开图像字节流
>将字节转换为位图
>缩放位图
>压缩位图
>将位图转换回字节

总结

以上是内存溢出为你收集整理的java-压缩图像以上传到Android中的服务器的过程全部内容,希望文章能够帮你解决java-压缩图像以上传到Android中的服务器的过程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存