美文网首页
iOS 处理HTML中的img标签src= blob:file:

iOS 处理HTML中的img标签src= blob:file:

作者: Cocoa_Coder | 来源:发表于2019-07-09 16:00 被阅读0次

    编辑于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输入

    相关文章

      网友评论

          本文标题:iOS 处理HTML中的img标签src= blob:file:

          本文链接:https://www.haomeiwen.com/subject/xdxecctx.html