iOS微信截圖分享
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;
}