1、需求:将截屏后的图片分享至微信好友或朋友圈。
2、问题:1、图片缩略图太大无法分享;2、分享的图片不够清晰。
3、描述:微信分享是需要设置两张图:需分享图的缩略图(大小有限制)和需分享的图(要求高清,分享个模糊图,体验差就没意义!)。
4、注意:按照微信要求缩略图大小不超过32k,但实质上在一定范围内,超过32k,也是可以分享出去的;
缩略图太大将导致分享失败。
上代码:
-(void)didClickShareBtn:(computeScoreView *)computeScoreView{
//1.像微信注册
[WXApi registerApp:kWXAppId];
//2.缩略图
WXMediaMessage * massage = [WXMediaMessage message];
[massage setThumbImage:[self thumbScaleImage]];
//3.高清大图
WXImageObject * iamgeOb = [WXImageObject object];
iamgeOb.imageData = UIImageJPEGRepresentation([self mediaImageObj], 1.0);
massage.mediaObject = iamgeOb;
//4.发送请求
SendMessageToWXReq * req = [[SendMessageToWXReq alloc]init];
req.bText = NO;
req.message = massage;
req.scene = WXSceneSession;
[WXApi sendReq:req];
}
/**缩略图**/
-(UIImage *)thumbScaleImage{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 1.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
float scaleNum =1.0;
NSData * data =UIImageJPEGRepresentation(img, scaleNum);
float imageDataLength = data.length/1024.0;
/**按照微信要求缩略图大小不超过32k,但实质上在一定范围内,超过32k,也是可以分享出去的**/
while (imageDataLength>32.0) {
scaleNum = scaleNum - 0.1;
data =UIImageJPEGRepresentation(img, scaleNum);
imageDataLength = data.length/1024.0;
}
UIImage * finalImg = [UIImage imageWithData:data];
return finalImg;
}
/** 高清大图**/
-(UIImage *)mediaImageObj
{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data =UIImageJPEGRepresentation(img, 1.0);
return img;
}
优化篇:http://blog.csdn.net/lovehalok/article/details/72782450