微信分享出错问题,MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid
之前做了個微信分享,隔了一段時間突然發現提示下面錯誤:
MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid
MicroMsg.SDK.WXApiImplV10: sendReq checkArgs fail
網上查詢了目前看到兩種解決方法:
1、分享圖片大小不能大于32kb。
2、修改以下代碼:
public?static?byte[]?bmpToByteArray(final?Bitmap?bmp,?final?boolean?needRecycle)?{
? ByteArrayOutputStream?output?=?new?ByteArrayOutputStream();
????????bmp.compress(CompressFormat.PNG,?100,?output);
????????if?(needRecycle)?{
????????????bmp.recycle();
????????}
????????
????????byte[]?result?=?output.toByteArray();
????????try?{
????????????output.close();
????????}?catch?(Exception?e)?{
????????????e.printStackTrace();
????????}
????????
????????return?result;
????}
現將其改成如下所示的:
public?static?byte[]?bmpToByteArray(final?Bitmap?bmp,?final?boolean?needRecycle)?{
? ? ? ? int?i;
????????int?j;
????????if?(bmp.getHeight()?>?bmp.getWidth())?{
????????????i?=?bmp.getWidth();
????????????j?=?bmp.getWidth();
????????}?else?{
????????????i?=?bmp.getHeight();
????????????j?=?bmp.getHeight();
????????}
????????
????????Bitmap?localBitmap?=?Bitmap.createBitmap(i,?j,?Bitmap.Config.RGB_565);
????????Canvas?localCanvas?=?new?Canvas(localBitmap);
????????
????????while?(true)?{
????????????localCanvas.drawBitmap(bmp,?new?Rect(0,?0,?i,?j),?new?Rect(0,?0,i,?j),?null);
????????????if?(needRecycle)
????????????????bmp.recycle();
????????????ByteArrayOutputStream?localByteArrayOutputStream?=?new?ByteArrayOutputStream();
????????????localBitmap.compress(Bitmap.CompressFormat.JPEG,?100,
????????????????????localByteArrayOutputStream);
????????????localBitmap.recycle();
????????????byte[]?arrayOfByte?=?localByteArrayOutputStream.toByteArray();
????????????try?{
????????????????localByteArrayOutputStream.close();
????????????????return?arrayOfByte;
????????????}?catch?(Exception?e)?{
????????????????//F.out(e);
????????????}
????????????i?=?bmp.getHeight();
????????????j?=?bmp.getHeight();
????????}
事實證明,這兩種方法并沒有解決我的問題。
在使用第一種方法時并不能解決我的問題,在使用第二種方法時,按照官方demo的方法把圖片的大小設置成150*150之后是可以的(不管以前大小多少),我們的圖標是300*300并且是需要網絡獲取,大小也超過了32kb。
我是通過下面這種方法解決的,在獲取網絡圖標的時候使用demo中Util類中getHtmlByteArray(final String url)方法,直接把網絡數據轉換成byte[]格式,然后轉換成Bitmap,
BitmapFactory.decodeByteArray(Util.getHtmlByteArray(imgUrl),300,300)然后在設置的時候使用
mediaMessage.thumbData = Util.bmpToByteArray(bitmap, true);這樣在分享時就不會報錯
總結
以上是生活随笔為你收集整理的微信分享出错问题,MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快乐的牛奶商 c语言6,C语言程序设计基
- 下一篇: 朴素贝叶斯模型简单理解