Android微信分享图片大于32k进行压缩

转载 2015年07月09日 15:12:23

微信分享视频的时候,需要传一个图片数组,大小不能大于32k。  

解决方案:使用Bitmap自带的compress方法解决了这个问题.


源码如下:

<span style="font-size:14px;">package com.example.test;

import java.io.ByteArrayOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		new LoadPicThread("http://7xjp2s.dl2.z0.glb.qiniucdn.com/2015/07/01/2248c3025a9989f062ce8b8c52a72481_m.jpg",new Handler(){
			@Override
			public void handleMessage(Message msg) {
				byte[] bytes=(byte[]) msg.obj;
				if(bytes.length>IMAGE_SIZE){
					Toast.makeText(MainActivity.this, "图片尺寸太大", 0).show();
					return;
				}
				System.out.println("视频截屏图片长度:"+bytes.length);
			}
		}).start();
	}
	
	
	public static final int IMAGE_SIZE=32768;//微信分享图片大小限制
	private class LoadPicThread extends Thread{
		private String url;
		private Handler handler;
		public LoadPicThread(String url,Handler handler){
			this.url=url;
			this.handler=handler;
		}
		
		@Override
		public void run(){
			try {
				URL picurl = new URL(url); 
				HttpURLConnection conn = (HttpURLConnection)picurl.openConnection(); // 获得连接 
				conn.setConnectTimeout(6000);//设置超时 
				conn.setDoInput(true); 
				conn.setUseCaches(false);//不缓存 
				conn.connect();
				Bitmap bmp=BitmapFactory.decodeStream(conn.getInputStream());
				
				ByteArrayOutputStream output = new ByteArrayOutputStream();
				
				bmp.compress(Bitmap.CompressFormat.JPEG, 100, output);
				int options = 100;
				while (output.toByteArray().length > IMAGE_SIZE && options != 10) { 
					output.reset(); //清空baos
					bmp.compress(Bitmap.CompressFormat.JPEG, options, output);//这里压缩options%,把压缩后的数据存放到baos中  
		            options -= 10;
				}
				
				bmp.recycle();
				byte[] result = output.toByteArray();
				output.close();
				
				Message message=handler.obtainMessage();
				message.obj=result;
				message.sendToTarget();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

}</span><span style="font-size: 18px;">
</span>


主要开启一个线程读取服务器图片.用while循环压缩图片。。。图片小于32k或者已经压缩了9次退出循环

相关文章推荐

iOS 分享功能之图片压缩(微信好友-朋友圈)

iOS 分享中图片压缩(微信好友丶朋友圈)

Android集成微信分享,由于分享的缩略图大于32K,而无法调起微信客户端

在项目中集成微信分享功能,分享的是一个链接,带有图片和标题。 按照微信开放平台网页类型分享示例,进行代码编写,但是点击分享 始终无法调起微信客户端。 /** * 微信分享到好友(聊天界...

iOS开发微信分享图片32K限制解决方案

问题描述:集成了第三方分享之后,点击微信可能会出现不跳转的情况,没有任何提示。很可能是因为要分享的图片超过了32K,这是该死的微信自己做的限制。...
  • it_kaka
  • it_kaka
  • 2016年07月21日 17:31
  • 3972

微信分享 微信对图片文字大小的限制 代码如下

微信分享 微信对图片文字大小的限制 代码如下final boolean checkArgs() { if ((getType() == 8) ...

Android图片压缩(质量压缩和尺寸压缩)&Bitmap转成字符串上传

在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手...
  • jdsjlzx
  • jdsjlzx
  • 2015年03月12日 22:38
  • 94764

友盟分享本地图片到微信无法调起微信解决方案

背景 webview 中分享本地图片到微信、朋友圈和QQ,目前QQ空间暂不支持分享纯图片,分享到QQ时正常分享,但分享到微信时调不起微信程序,此为背景,有以下解决方案。 有这样一段分享代码pri...

最接近微信的图片压缩算法Luban

Luban是一个国内很牛逼的图片压缩库:https://github.com/Curzibn/Luban 使用这个库有很多东西都没法自己修改了(比如压缩后图片保存的地址)。所以我把源码弄下来。自己做一...

安卓图片的压缩,尺寸,质量,采样率和微信压缩

图片压缩:分为质量压缩,尺寸压缩,采样率压缩,微信压缩(哈夫曼编码)(都不是重点,重点是第四种) 质量压缩:设置bitmap options属性,降低图片的质量,像素不会减少 尺寸压缩:通过缩放像素减...

Android图片压缩小结

在做微信分享的时候,由于分享的缩略图要求不得大于32K,否则不能dia

Android调用微信原生分享接口,进入微信分享界面返回不了!

今天测试员发现一个bug,分享停在微信界面,返回不了了,我擦!我就慢慢排除bug······首先图片符合微信分享限制的大public static final int THUMB_LENGTH_LIM...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android微信分享图片大于32k进行压缩
举报原因:
原因补充:

(最多只允许输入30个字)