react-native-wechat
react-native-wechat copied to clipboard
分享小程序消息清晰的图片会变模糊
图片地址给的是hdImageData字段,有谁碰到过么
上图是微信SDK(wechat-sdk-android-without-mta)源码截图,看到其中有做压缩处理,不确定是否这个原因导致的。
你的hdImageData是怎么写的?
用png图片试试
@zacksleo ,就是图片地址啊,还能怎么写,直接浏览器访问是清晰,分享出去后在微信聊天消息记录看到的却很模糊。
@clijiac ,还真有效,png格式的图片就不模糊了,醉了,原先的都是jpg格式。我怀疑组件本身做了压缩处理导致图片变模糊的,同样的图片小程序分享的是清晰的,APP通过本组件分享的却是模糊的。
@clijiac ,还真有效,png格式的图片就不模糊了,醉了,原先的都是jpg格式。我怀疑组件本身做了压缩处理导致图片变模糊的,同样的图片小程序分享的是清晰的,APP通过本组件分享的却是模糊的。
估计是微信的bug, 好像是安卓平台才有
@clijiac ,额,iOS都是清晰的么?
@clijiac ,额,iOS都是清晰的么? 一样不清晰
我的貌似ios清晰,android不清楚
@clijiac ,照这么说不是本组件压缩了就是微信SDK压缩了
@zacksleo ,所有图片格式都清晰么?
我的android png 是清晰的其他格式是模糊的,ios 全部都是模糊的。
@ziyuCat ,看来真是这样没错了,暂时无解啊。
ios hdImageData 这个字段微信api 说是传入 图片二进制数据,我传入二进制分享出来的图片是一个大大的问号。铁子门,什么问题
@ziyuCat ,要求是字符串类型,不是二进制类型。
@ziyuCat ,组件源码中是这样处理的。
老哥。你第二个截图是安卓的吧。我现在是ios 的有问题,hdImageData 他是这样处理的,然后我传入图片url,微信直接调不起来,我传入 图片二进制 可以掉微信,但是图片是问号。@LSL1618
@ziyuCat ,对的,是安卓的源码。你的截图看不到。你的url是能正常访问的吧,因为我碰到过这样的问题425,你的还能传二进制数据我就有点懵逼了。
@LSL1618 老哥,https://github.com/yorkie/react-native-wechat/tree/1022f4b98a750ad137fdb0013a44d9bec7c24fe9 我刚刚下载了这个的 wechat 然后替换了我本地的,现在 ios 我传url 也掉不起来微信了(之前是模糊)。url 我打了日志,是可以访问的。

@LSL1618 卧槽,发现问题了。刚刚我替换了新的 wechat 后,js调用的 type 忘改了。。。
@ziyuCat ,我是下载的这个https://github.com/puti94/react-native-wechat,npm仓库上的版本不是最新的。
@ziyuCat ,type是mini吧
@LSL1618 是的。老哥 app 端 怎么处理小程序的打开消息呢。小程序那里我搞定了。但是 app这里,我看官方的文档看不懂

WeChat.shareToSession({}).then(res => {
// 成功回调
console.log('成功发送微信小程序消息给好友----->', res);
}).catch(error => {
// 出错回调
console.log('发送微信小程序消息发生错误----->', error);
});
@ziyuCat ,不是这样处理吗?
@LSL1618 我的意思是 用户通过分享的消息卡片进入小程序后,然后通过点击某个按钮,再打开 app的操作
@ziyuCat ,哦哦哦,小程序打开APP啊,这一块我也没做过。
分享到小程序 demo:
import { Alert } from 'react-native';
import gameShare from './game-share.png';
const resolveAssetSource = require('resolveAssetSource');
wechat.shareToSession({
type: 'mini',
userName: '小程序原始ID',
path: '/pages/site/index/index',
hdImageData: resolveAssetSource(gameShare).uri,
webpageUrl: 'https://demo.com/game/download',
miniProgramType: 0
}).then(() => {
//do sth
}).catch(() => {
Alert.alert('分享失败');
});
@zacksleo ,你传的png啊,清晰不?我是直接传的http链接,hdImageData: url。
ios清晰,安卓不清晰
@zacksleo ,不应该啊,我用安卓只有传png才是清晰的。
@zacksleo ,不应该啊,我用安卓只有传png才是清晰的。
其实是这句话的问题
this._getImage(uri, new ResizeOptions(100, 100), new ImageCallback() {
@Override
public void invoke(@Nullable Bitmap bitmap) {
WeChatModule.this._share(scene, data, bitmap, callback);
}
});
改为300 或者 400 清楚多了