react-native-wechat icon indicating copy to clipboard operation
react-native-wechat copied to clipboard

分享小程序消息清晰的图片会变模糊

Open LSL1618 opened this issue 6 years ago • 33 comments

图片地址给的是hdImageData字段,有谁碰到过么 image_emoticon15 image image 上图是微信SDK(wechat-sdk-android-without-mta)源码截图,看到其中有做压缩处理,不确定是否这个原因导致的。

LSL1618 avatar Dec 17 '18 09:12 LSL1618

你的hdImageData是怎么写的?

zacksleo avatar Dec 23 '18 11:12 zacksleo

用png图片试试

clijiac avatar Jan 04 '19 09:01 clijiac

@zacksleo ,就是图片地址啊,还能怎么写,直接浏览器访问是清晰,分享出去后在微信聊天消息记录看到的却很模糊。

LSL1618 avatar Jan 15 '19 06:01 LSL1618

@clijiac ,还真有效,png格式的图片就不模糊了,醉了,原先的都是jpg格式。我怀疑组件本身做了压缩处理导致图片变模糊的,同样的图片小程序分享的是清晰的,APP通过本组件分享的却是模糊的。

LSL1618 avatar Jan 15 '19 06:01 LSL1618

@clijiac ,还真有效,png格式的图片就不模糊了,醉了,原先的都是jpg格式。我怀疑组件本身做了压缩处理导致图片变模糊的,同样的图片小程序分享的是清晰的,APP通过本组件分享的却是模糊的。

估计是微信的bug, 好像是安卓平台才有

clijiac avatar Jan 15 '19 06:01 clijiac

@clijiac ,额,iOS都是清晰的么?

LSL1618 avatar Jan 15 '19 07:01 LSL1618

@clijiac ,额,iOS都是清晰的么? 一样不清晰

yutianhaijiao avatar Jan 15 '19 07:01 yutianhaijiao

我的貌似ios清晰,android不清楚

zacksleo avatar Jan 15 '19 08:01 zacksleo

@clijiac ,照这么说不是本组件压缩了就是微信SDK压缩了

LSL1618 avatar Jan 15 '19 08:01 LSL1618

@zacksleo ,所有图片格式都清晰么?

LSL1618 avatar Jan 15 '19 08:01 LSL1618

我的android png 是清晰的其他格式是模糊的,ios 全部都是模糊的。

ziyuCat avatar Jan 16 '19 12:01 ziyuCat

@ziyuCat ,看来真是这样没错了,暂时无解啊。

LSL1618 avatar Jan 17 '19 01:01 LSL1618

ios hdImageData 这个字段微信api 说是传入 图片二进制数据,我传入二进制分享出来的图片是一个大大的问号。铁子门,什么问题

ziyuCat avatar Jan 17 '19 01:01 ziyuCat

image @ziyuCat ,要求是字符串类型,不是二进制类型。

LSL1618 avatar Jan 17 '19 01:01 LSL1618

image @ziyuCat ,组件源码中是这样处理的。

LSL1618 avatar Jan 17 '19 02:01 LSL1618

image 老哥。你第二个截图是安卓的吧。我现在是ios 的有问题,hdImageData 他是这样处理的,然后我传入图片url,微信直接调不起来,我传入 图片二进制 可以掉微信,但是图片是问号。@LSL1618

ziyuCat avatar Jan 17 '19 06:01 ziyuCat

@ziyuCat ,对的,是安卓的源码。你的截图看不到。你的url是能正常访问的吧,因为我碰到过这样的问题425,你的还能传二进制数据我就有点懵逼了。

LSL1618 avatar Jan 17 '19 07:01 LSL1618

@LSL1618 老哥,https://github.com/yorkie/react-native-wechat/tree/1022f4b98a750ad137fdb0013a44d9bec7c24fe9 我刚刚下载了这个的 wechat 然后替换了我本地的,现在 ios 我传url 也掉不起来微信了(之前是模糊)。url 我打了日志,是可以访问的。 image

ziyuCat avatar Jan 17 '19 07:01 ziyuCat

@LSL1618 卧槽,发现问题了。刚刚我替换了新的 wechat 后,js调用的 type 忘改了。。。

ziyuCat avatar Jan 17 '19 07:01 ziyuCat

@ziyuCat ,我是下载的这个https://github.com/puti94/react-native-wechat,npm仓库上的版本不是最新的。

LSL1618 avatar Jan 17 '19 08:01 LSL1618

@ziyuCat ,type是mini吧

LSL1618 avatar Jan 17 '19 08:01 LSL1618

@LSL1618 是的。老哥 app 端 怎么处理小程序的打开消息呢。小程序那里我搞定了。但是 app这里,我看官方的文档看不懂 image

ziyuCat avatar Jan 17 '19 09:01 ziyuCat

WeChat.shareToSession({}).then(res => {
	// 成功回调
	console.log('成功发送微信小程序消息给好友----->', res);
}).catch(error => {
	// 出错回调
	console.log('发送微信小程序消息发生错误----->', error);
});

@ziyuCat ,不是这样处理吗?

LSL1618 avatar Jan 17 '19 09:01 LSL1618

@LSL1618 我的意思是 用户通过分享的消息卡片进入小程序后,然后通过点击某个按钮,再打开 app的操作

ziyuCat avatar Jan 17 '19 10:01 ziyuCat

@ziyuCat ,哦哦哦,小程序打开APP啊,这一块我也没做过。

LSL1618 avatar Jan 18 '19 01:01 LSL1618

分享到小程序 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 avatar Jan 18 '19 02:01 zacksleo

@zacksleo ,你传的png啊,清晰不?我是直接传的http链接,hdImageData: url

LSL1618 avatar Jan 18 '19 04:01 LSL1618

ios清晰,安卓不清晰

zacksleo avatar Jan 18 '19 06:01 zacksleo

@zacksleo ,不应该啊,我用安卓只有传png才是清晰的。

LSL1618 avatar Jan 18 '19 08:01 LSL1618

@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 清楚多了

vpjacob avatar Jul 18 '19 06:07 vpjacob