編輯于2019-06-28 。
正常來講,直接用這個方法
NSData *imageData = [NSData dataWithContentsOfFile:path];//path為 blob:file:///XXXXX
來處理的話, imageData的值為空,可以這么試試,曲線救國
1.用js方法,將image轉成base64字符
下邊代碼可以直接保存成html文件測試,不過需要解決下跨域問題,推薦使用Chrome瀏覽器,
解決方法: Mac上解決Chrome瀏覽器跨域問題
\\\\\\\\\\\\\\\\\\HTML測試代碼\\\\\\\\\\\\\\\\\\\\
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<title>js 圖片轉base64方式</title>
</head>
<body>
<img id="image" src="img.png">
<img id="image" src="img2.png">
<img id="image" src="img3.png">
<button onclick="getBase64Str();"> 獲取 </button>
<p id="container2"></p>
<script type = "text/javascript">
function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
var dataURL = canvas.toDataURL("image/"+ext);
return dataURL;
}
function getBase64Str() {
var imgSrc = "file:///Users/ruanmei/Desktop/1/img.png";
var images = document.getElementsByTagName('img');
for (var i = 0; i < images.length; i) {
var image = images[i];
console.log(image.src);
if (image.src ==imgSrc) {
var base64 = getBase64Image(image);
console.log(base64);
}
i++;
}
}
</script>
</body>
</html>
\\\\\\\\\\\\\\\\\\JS代碼\\\\\\\\\\\\\\\\\\\
JS代碼
function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
var dataURL = canvas.toDataURL("image/"+ext);
return dataURL;
}
\\\\\\\\\\\\\\\\\\OC代碼\\\\\\\\\\\\\\\\\\\\
//這個方法可以放到webview的類目中
- (NSString *)getBase64ImageWithURL:(NSString *)imageURL{
NSString *trigger = [NSString stringWithFormat:@"getBase64Image(\"%@\");",imageURL];
NSString * base64Str = [self stringByEvaluatingJavaScriptFromString:trigger];
return base64Str;
}
2.將轉換出來的base64字符轉換為NSData
這一步就簡單了
//獲取到base64字符串
NSString * Base64Str = [self.webview getBase64ImageWithURL:homePath];
NSURL * baseImageUrl = [NSURL URLWithString:Base64Str];//先轉化為NSURL
NSData * imageData = [NSData dataWithContentsOfURL:baseImageUrl];//base64字符串轉data
完成。
\\\\\\\\\\\\\\\\\\更新\\\\\\\\\\\\\\\\\\\
這個方法支持memoji輸入