如何从iOS照片库中获取图像并将其显示在UIWebView中

X0r*_*r0N 22 objective-c uiwebview ios

我已经看过很多UIImage用于输出图像的例子.我想将输出设置为a,UIWebView因为我想在图像周围添加一些额外的HTML格式.

我想让照片库返回存储在iOS设备上的图像的相对路径,这样我就可以将它放在'img'HTML标签的'src'属性中.

这可能吗?


编辑1

我不得不修改我想要的代码,但这似乎不起作用.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    //Get Image URL from Library
    NSURL *urlPath = [info valueForKey:UIImagePickerControllerReferenceURL];
    NSString *urlString = [urlPath absoluteString];
    NSLog(urlString);

    NSURL *root = [[NSBundle mainBundle] bundleURL];
    NSString *html;
    html = @"<img src='";
    html = [html stringByAppendingString:urlString];
    html = [html stringByAppendingString:@"' />"];
    [MemeCanvas loadHTMLString:html baseURL:root];

    [picker dismissViewControllerAnimated:YES completion:^{}];
}
Run Code Online (Sandbox Code Playgroud)

我能够记录资产库URL,但似乎没有显示图像UIWebView.我不知道我需要将baseURL更改为.

任何帮助赞赏.


编辑2

我改变UIImagePickerControllerReferenceURLUIImagePickerControllerMediaURL,现在它崩溃了,因为当我将它附加到字符串时它不喜欢它stringByAppendingString:urlString

它给了我错误:

因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*** - [__ NSCFConstantString stringByAppendingString:]:nil参数'

你知道这可能导致什么吗?

Lir*_*rik 36

您可以使用UIImagePickerController委托来选择要编辑的图像(或URL).

你可以这样做:

let pickerController = UIImagePickerController()
pickerController.sourceType = .photoLibrary
pickerController.delegate = self
self.navigationController?.present(pickerController, animated: true, completion: {
})
Run Code Online (Sandbox Code Playgroud)

在委托实现中,您可以使用图像的路径或图像本身:

// This method is called when an image has been chosen from the library or taken from the camera.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {    
   //You can retrieve the actual UIImage
   let image = info[UIImagePickerControllerOriginalImage] as? UIImage
   //Or you can get the image url from AssetsLibrary
   let path = info[UIImagePickerControllerReferenceURL] as? URL
   picker.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)


Zai*_*han 9

斯威夫特4

class ViewController: UIViewController {
    var pickedImage:UIImage?

    @IBAction func ActionChooseImage(sender:UIButton){
        let imagePickerController = UIImagePickerController()
        imagePickerController.sourceType = .photoLibrary
        imagePickerController.delegate = self
        self.present(imagePickerController, animated: true, completion: nil)
    }
}

extension ViewController: UIImagePickerControllerDelegate,UINavigationControllerDelegate {
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        let image = info[UIImagePickerControllerOriginalImage] as? UIImage
        self.pickedImage = image

        picker.dismiss(animated: true, completion: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

参考