解決微信分享圖片,網址失效的Bug -- 不完美解決
先吐槽一句,微信SDK做的真TM的爛,主要是容錯能力太爛,出錯誤不提示,文件各種簡陋。
我是在專案中用微信SDK分享帶圖片的連線,如下:
發現有的連線可以正常分享有的卻不行,wechat_api.sendReq(req);返回false
微信官方傻X文件是這樣描述的:
然後我就表示很不理解了。
後來在微信SDK網站亂逛的時候發現了這麼一條:
Q:為什麼使用微信SDK分享資訊給微信好友,有的訊息傳送成功,有的訊息傳送失敗(打不開微信)?(New)A:這是因為SDK協議中對縮圖的大小作了限制,大小不能超過32K。另外限制的還有title、description等引數的大小。iOS開發者請在
好的,原因是我分享的縮圖超過了32k,那就壓縮吧。
==============
因為我用的是png的圖片,在stackoverflow上發現Bitmap的compress方法不支援PNG,只支援JPG。各種嘗試之後放棄了使用Bitmap的compress方法。
最後改用直接壓縮解析度,但是這樣不完美的地方在於我把超過32k的圖片全部改為99*99的,會丟掉部分細節。不知道有沒有人可以提供更完美的方式。
public Bitmap createBitmapThumbnail(Bitmap bitMap) { int width = bitMap.getWidth(); int height = bitMap.getHeight(); // 設定想要的大小 int newWidth = 99; int newHeight = 99; // 計算縮放比例 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 取得想要縮放的matrix引數 Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); // 得到新的圖片 Bitmap newBitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height, matrix, true); return newBitMap; }
=======另附上Android上圖片壓縮方式=======
第一:我們先看下質量壓縮方法:
- private Bitmap compressImage(Bitmap image) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//質量壓縮方法,這裡100表示不壓縮,把壓縮後的資料存放到baos中
- int options = 100;
-
while
- baos.reset();//重置baos即清空baos
- image.compress(Bitmap.CompressFormat.JPEG, options, baos);//這裡壓縮options%,把壓縮後的資料存放到baos中
- options -= 10;//每次都減少10
- }
- ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把壓縮後的資料baos存放到ByteArrayInputStream中
- Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream資料生成圖片
- return bitmap;
- }
第二:圖片按比例大小壓縮方法(根據路徑獲取圖片並壓縮):
- private Bitmap getimage(String srcPath) {
- BitmapFactory.Options newOpts = new BitmapFactory.Options();
- //開始讀入圖片,此時把options.inJustDecodeBounds 設回true了
- newOpts.inJustDecodeBounds = true;
- Bitmap bitmap = BitmapFactory.decodeFile(srcPath,newOpts);//此時返回bm為空
- newOpts.inJustDecodeBounds = false;
- int w = newOpts.outWidth;
- int h = newOpts.outHeight;
- //現在主流手機比較多是800*480解析度,所以高和寬我們設定為
- float hh = 800f;//這裡設定高度為800f
- float ww = 480f;//這裡設定寬度為480f
- //縮放比。由於是固定比例縮放,只用高或者寬其中一個數據進行計算即可
- int be = 1;//be=1表示不縮放
- if (w > h && w > ww) {//如果寬度大的話根據寬度固定大小縮放
- be = (int) (newOpts.outWidth / ww);
- } elseif (w < h && h > hh) {//如果高度高的話根據寬度固定大小縮放
- be = (int) (newOpts.outHeight / hh);
- }
- if (be <= 0)
- be = 1;
- newOpts.inSampleSize = be;//設定縮放比例
- //重新讀入圖片,注意此時已經把options.inJustDecodeBounds 設回false了
- bitmap = BitmapFactory.decodeFile(srcPath, newOpts);
- return compressImage(bitmap);//壓縮好比例大小後再進行質量壓縮
- }
第三:圖片按比例大小壓縮方法(根據Bitmap圖片壓縮):
- private Bitmap comp(Bitmap image) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
- if( baos.toByteArray().length / 1024>1024) {//判斷如果圖片大於1M,進行壓縮避免在生成圖片(BitmapFactory.decodeStream)時溢位
- baos.reset();//重置baos即清空baos
- image.compress(Bitmap.CompressFormat.JPEG, 50, baos);//這裡壓縮50%,把壓縮後的資料存放到baos中
- }
- ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
- BitmapFactory.Options newOpts = new BitmapFactory.Options();
- //開始讀入圖片,此時把options.inJustDecodeBounds 設回true了
- newOpts.inJustDecodeBounds = true;
- Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);
- newOpts.inJustDecodeBounds = false;
- int w = newOpts.outWidth;
- int h = newOpts.outHeight;
- //現在主流手機比較多是800*480解析度,所以高和寬我們設定為
- float hh = 800f;//這裡設定高度為800f
- float ww = 480f;//這裡設定寬度為480f
- //縮放比。由於是固定比例縮放,只用高或者寬其中一個數據進行計算即可
- int be = 1;//be=1表示不縮放
- if (w > h && w > ww) {//如果寬度大的話根據寬度固定大小縮放
- be = (int) (newOpts.outWidth / ww);
- } elseif (w < h && h > hh) {//如果高度高的話根據寬度固定大小縮放
- be = (int) (newOpts.outHeight / hh);
- }
- if (be <= 0)
- be = 1;
- newOpts.inSampleSize = be;//設定縮放比例
- //重新讀入圖片,注意此時已經把options.inJustDecodeBounds 設回false了
- isBm = new ByteArrayInputStream(baos.toByteArray());
- bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);
- return compressImage(bitmap);//壓縮好比例大小後再進行質量壓縮
- }
試一試:點選下載。
相關推薦
解決微信分享圖片,網址失效的Bug -- 不完美解決
先吐槽一句,微信SDK做的真TM的爛,主要是容錯能力太爛,出錯誤不提示,文件各種簡陋。 我是在專案中用微信SDK分享帶圖片的連線,如下: 發現有的連線可以正常分享有的卻不行,wechat_api.sendReq(req);返回false
微信分享功能,手機分享圖片不顯示
問題原因猜想: a.圖片大小和尺寸太大出不來:圖片是150X150 的,近40K,後來給製作重新做圖,30X30的10k不到,分享圖片大小最好不要超過32k ,尺寸100x100以上就行,別太大了,太小了圖片失真 b.圖片路徑有{-}中劃線:某些瀏覽器或手機對含有中劃線的
微信分享功能,安卓手機分享圖片不顯示
最近公司做的一些專案都跟微信有關係,需要有個分享的功能,但是在測試環境的時候分享功能都正常,圖片標題描述之類的都沒問題,放到線上,安卓手機分享時,縮圖就是不顯示 介紹一下測試/生產環境: 測試環境:網站和圖片伺服器都是採用http 生產環境:網站和圖片伺服器都是採用https 問題原因猜想:
Android 微信分享圖片
static compress recycle 我們 text scale png _id string private String APP_ID = "00000000000000000"; //微信 APPID private IWXAPI iwxapi;
簡單設置微信分享圖片
auto nbsp keywords ctype div pat title gin doctype 設置微信分享企業網站時,微信縮略圖, 圖片: <!DOCTYPE html> <html> <head> <m
微信分享連結出現config:invalid signature錯誤的解決方法
當開發微信時需要做特定的頁面做分享時,根據官方提供的jssdk.php檔案建立的簽名資料包除錯時,大家碰到的最多的錯誤而且解決最麻煩的大概就是signature錯誤了,如下圖: 分享時提示錯誤“{"errMsg":"config:invalid signature"}” 一般出現這個錯
關於設定微信分享標題,圖示
公眾號端: 1.你得有一個公眾號(訂閱號、服務號) 2.當前網站域名加進公眾號的js安全域名中(這一步必須,注意域名格式,已經將檔案放入指定位置,域名一般會繫結一個路徑到哪個資料夾,所以得將檔案放入對的位置,否則不能新增) 3.當前網站伺服器的ip加進公眾號的ip白名單中(這一步必須,在公眾號當中新增,
解決微信小程式使用wxcharts在螢幕不固定問題-開發工具裡也顯示好了佈局,為啥到真機就是亂的
解決微信小程式使用wxcharts在螢幕不固定問題-開發工具裡也顯示好了佈局,為啥到真機就是亂的 .chart{ width: 100%; text-align: center; } .canvas{ /* position: absolute; top: 10%; */ width: 100%; heig
react-native 解決微信分享、微信支付 因簽名不一致導致的分享失敗
當我們在做微信微博sdk分享的時候除錯非常麻煩,因為要使用對應的簽名版本才能呼叫sdk成功。 當我們使用AndroidStudio的Gradle之後會很簡單的解決這個問題。 1.我們把簽名檔案放到工程根目錄下(這樣做是為了保持路徑的統一) 2.在Gradle中引入如下程
ShareSDk微信分享簽名獲取及修改後不生效的解決辦法
在微信開放平臺,獲取安卓應用簽名,有兩種方法,第一種是通過android studio命令列,命令如下:keytool -list -v -keystore H:\路徑\XXXXX.jks 重點:簽名是
網頁連結分享到微信朋友圈帶圖示和摘要的完美解決方法
先看效果: 我不喜歡回形針。 以前我僅僅把網頁開始的地方放一個不可見的圖片,後來發現沒有效果。 現在我們開始: 原料:微信公眾號: 步驟一:繫結域名 先登入微信公眾平臺進入“公眾號設定”的“功能設定”裡填寫“JS介面安全域名”。 步驟
記一次錯誤:無法調起微信分享圖片
場景 由於專案需要,要在預覽圖片介面新增圖片分享功能,需要對純圖片進行分享,所以照舊呼叫了微信分享的封裝方法(WxShareUtil.of().open(true, bitmap);),第一個引數為是否分享到朋友圈,第二個引數為bitmap,因為預覽的圖片為u
javascript獲取wx.config內部欄位解決微信分享
轉自:http://www.jb51.net/article/80679.htm 背景 在微信分享開發的時候我們通常的流程是 <?php require_once "jssdk.php"; $jssdk = new
android為什麼我呼叫新浪微博分享圖片,分享的是一張很模糊,基本失真的圖片。。怎麼處理
程式碼如下,用這種方式調QQ,微信就不存在這麼嚴重的失真現象。 private String imageUrl = null; private void weiboShare(){ if (!
Android友盟微信分享失敗,一閃而過
BUG, 在這裡記錄一下這個奇葩問題,分享一下解決方案,真的無語了!!1.檢查程式碼,排除自身的程式碼問題。2.檢視安裝的釋出版APP的簽名,檢查這個簽名是否和微信開放平臺填寫的簽名一致。檢查包名是否填錯。3.檢查混淆打包時是否忽略了的加入友盟SDK的混淆程式碼。4.檢視列印的錯誤LOG,然後一直提示應用簽名
微信分享時,標題、內容、圖標不顯示問題(時序問題)
origin nstat 顯示 圖標 ins 接口回調 打印 內容 window 今天在處理微信分享時,標題,內容、圖標不顯示問題,最後發現是時序問題。 只說思路,不上代碼, 我是在主頁,和詳情頁獲取的分享的參數(是一個對象,裏面含有title、shareUrl、conte
微信分享圖片和標題不展示
步驟一:繫結域名 先登入微信公眾平臺進入“公眾號設定”的“功能設定”裡填寫“JS介面安全域名”。 備註:登入後可在“開發者中
利用WxJava實現網站整合微信登入功能,核心程式碼竟然不超過10行
最近網站PC端整合微信掃碼登入,踩了不少坑,在此記錄下實現過程和注意事項。 本文目錄 一、微信開放平臺操作步驟1.建立“網站應用”2.獲取AppID和AppSecret二、開發指南三、開發實戰1、pom.xml引入jar包2、配置檔案新增對應的配置3、初始化配置4、控制
微信分享,無法指定標題、圖片、鏈接
() clas follow api 服務 ref 可能性 info 有效 1.打開wx.config裏的debug將debug設置為true之後,手機進入頁面,會彈出錯誤信息(PC不管有沒有配置正確都會在開發者工具中打印出對應的分享信息,參考意義不是很大——不過可以拿來查
Android 微信分享後點擊留在微信,仍然跳到app的解決方法
今天碰到一個問題,同事在測試微信分享時,分享完了之後選擇留在微信,卻仍然跳回到了自己的app。在網上搜索時看到了這篇文章 https://blog.csdn.net/u010177022/article/details/80315499 ,看到其中有一段“當分享成功,點選“