小程序分享到朋友圈,android 分享小程序,Android分享微信小程序给微信好友,封面bitmap的处理

 2023-09-23 阅读 13 评论 0

摘要:image.png小程序分享到朋友圈、第一步:url转换为bitmapval imgPath = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1332951276,3206293713&fm=26&gp=0.jpg"object : AsyncTask(){override fun doInBackground(vararg

math?formula=%5Ccolor%7Bred%7D%7B~~bitmap%E4%B8%8D%E8%83%BD%E5%A4%A7%E4%BA%8E128k~~%7D

86c74feb5202

image.png

小程序分享到朋友圈、第一步:url转换为bitmap

val imgPath = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1332951276,3206293713&fm=26&gp=0.jpg"

object : AsyncTask(){

override fun doInBackground(vararg params: Void?): Bitmap {

//调用下面的方法getBitmap,传入线上图片url路径

return ImageLoadUtils.getBitmap("上下文",imgPath)

}

override fun onPostExecute(result: Bitmap?) {

super.onPostExecute(result)

result?.let {

PublicTools.tools.shareToWxProudct("上下文","分享小程序页面路径及拼接参数",it)

}

}

}.execute()

//url转bitmap

public static Bitmap getBitmap(String urlpath) {

Bitmap bm = null;

try {

URL iconUrl = new URL(urlpath);

URLConnection conn = iconUrl.openConnection();

HttpURLConnection http = (HttpURLConnection) conn;

int length = http.getContentLength();

conn.connect();

// 获得图像的字符流

InputStream is = conn.getInputStream();

BufferedInputStream bis = new BufferedInputStream(is, length);

bm = BitmapFactory.decodeStream(bis);

bis.close();

is.close();// 关闭流

}

catch (Exception e) {

e.printStackTrace();

}

return bm;

}

第二步:先对bitmap进行处理(drawWXMiniBitmap),再判断得到的bitmap是否大于128k(createBitmapThumbnail),

math?formula=%5Ccolor%7Bred%7D%7Bbitmap%E8%BD%AC%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%8D%E8%83%BD%E5%A4%A7%E4%BA%8E128k%7D

public static Bitmap drawWXMiniBitmap(Bitmap bitmap, int width, int height) {

Bitmap mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

// 用这个Bitmap生成一个Canvas,然后canvas就会把内容绘制到上面这个bitmap中

Canvas mCanvas = new Canvas(mBitmap);

// 绘制画笔

Paint mPicturePaint = new Paint();

// 绘制背景图片

mCanvas.drawBitmap(mBitmap, 0.0f, 0.0f, mPicturePaint);

// 绘制图片的宽、高

int width_head = bitmap.getWidth();

int height_head = bitmap.getHeight();

// 绘制图片--保证其在水平方向居中

mCanvas.drawBitmap(bitmap, (width - width_head) / 2, (height - height_head) / 2,

mPicturePaint);

// 保存绘图为本地图片

mCanvas.save();

mCanvas.restore();

return mBitmap;

}

/**

* Bitmap转换成byte[]并且进行压缩,压缩到不大于maxkb

*

* @param bitmap

* @param maxKb

* @return

*/

public static byte[] createBitmapThumbnail(Bitmap bitmap, int maxKb) {

ByteArrayOutputStream output = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);

int options = 100;

while (output.toByteArray().length > maxKb && options != 10) {

output.reset();

bitmap.compress(Bitmap.CompressFormat.JPEG, options, output);

options -= 10;

}

return output.toByteArray();

}

第三步:申请配置微信开放平台的appid,再到微信公众平台拿小程序的原始id,最后拉起微信,并分享出去

math?formula=%5Ccolor%7Bred%7D%7B1%EF%BC%9Aappid%20%E5%BE%AE%E4%BF%A1%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0%E7%9A%84appid%7D

math?formula=%5Ccolor%7Bred%7D%7B2%EF%BC%9AminiProgramObj.miniprogramType%E5%88%86%E4%BA%AB%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E7%89%88%E6%9C%AC%EF%BC%9A%E6%AD%A3%E5%BC%8F%E7%89%88%3A0%EF%BC%8C%E6%B5%8B%E8%AF%95%E7%89%88%3A1%EF%BC%8C%E4%BD%93%E9%AA%8C%E7%89%88%3A2%7D

math?formula=%5Ccolor%7Bred%7D%7B3%EF%BC%9AminiProgramObj.userName%20%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%8E%9F%E5%A7%8Bid%7D

math?formula=%5Ccolor%7Bred%7D%7B4%EF%BC%9AminiProgramObj.path%20%E5%88%86%E4%BA%AB%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%E9%A1%B5%E9%9D%A2%E8%B7%AF%E5%BE%84%E5%8F%8A%E5%8F%82%E6%95%B0%E6%8B%BC%E6%8E%A5%7D

val appId = MyParms.APP_ID // 填应用AppId

val api = WXAPIFactory.createWXAPI(this, appId)

val miniProgramObj = WXMiniProgramObject()

miniProgramObj.webpageUrl = " " // 兼容低版本的网页链接

// 正式版:0,测试版:1,体验版:2

miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE

miniProgramObj.userName = MyParms.WX_SMALL_PROGRAM // 小程序原始id

//小程序页面路径;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"

miniProgramObj.path = "pages/cardDetail/cardDetail?pcid=$cardId"

val msg = WXMediaMessage(miniProgramObj)

msg.title = "您赞,就是赞" // 小程序消息title

msg.description = "您赞,就是赞" // 小程序消息desc

val bitmap = BitmapFactory.decodeResource(resources, R.mipmap.icon)

if (null == bitmap) {

toast("分享失败")

return

}

//bitmap.height*5/4 ,bitmap.height

val newBitmap = ImageLoadUtils.drawWXMiniBitmap(bitmap,bitmap.width ,bitmap.height)

//此参数不能为空

msg.thumbData = ImageLoadUtils.createBitmapThumbnail(newBitmap,128) // 小程序消息封面图片,小于128k

bitmap.recycle()

val req = SendMessageToWX.Req()

req.transaction = "您赞,就是赞"//buildTransaction("miniProgram")

req.message = msg

req.scene = SendMessageToWX.Req.WXSceneSession // 目前只支持会话

api.sendReq(req)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/87104.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息