我该怎么做呢?
let pasteboard = UIPasteboard.general
let base64EncodedImageString = "here_base_64_string_image"
let data = Data(base64Encoded: base64EncodedImageString)
let url = data?.write(withName: "image.jpeg")
pasteboard.image = UIImage(url: url) //and now when I try to paste somewhere that image for example in imessage, it is rotated... why?可能重要的是:
如果使用完全相同的进程(!),则只对camera.
UIActivityViewController创建UIActivityViewController并尝试使用iMessage应用程序,那么它可以工作.为什么?有什么不同?我对UIImage和Data使用了上面两个简单的扩展
extension Data {
func write(withName name: String) -> URL {
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(name)
do {
try write(to: url, options: NSData.WritingOptions.atomic)
return url
} catch {
return url
}
}
}
extension UIImage {
convenience init?(url: URL?) {
guard let url = url else {
return nil
}
do {
self.init(data: try Data(contentsOf: url))
} catch {
return nil
}
}
}在服务器返回base64EncodedString之前,我会从摄像机上传一个图像,如下所示:
func imagePickerController(
_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]
) {
let image = info[.originalImage] as? UIImage
let encodedBase64 = image?.jpegData(compressionQuality: 0.9)?.base64EncodedString() ?? ""
//upload encodedBase64 to the server... that is all
}发布于 2022-02-12 17:19:33
我不确定,但我认为UIPasteBoard将您的形象转换为巴布亚新几内亚,并放弃它的方向。您可以显式地告诉您添加到黑板上的数据类型,但我不确定这是否适用于您的风景。
extension Data {
var image: UIImage? { UIImage(data: self) }
}设置您的纸板数据
UIPasteboard.general.setData(jpegData, forPasteboardType: "public.jpeg")从纸板加载数据
if let pbImage = UIPasteboard.general.data(forPasteboardType: "public.jpeg")?.image {
}或在设置pasteboard图像属性之前重新绘制图像。
extension UIImage {
func flattened(isOpaque: Bool = true) -> UIImage? {
if imageOrientation == .up { return self }
UIGraphicsBeginImageContextWithOptions(size, isOpaque, scale)
defer { UIGraphicsEndImageContext() }
draw(in: CGRect(origin: .zero, size: size))
return UIGraphicsGetImageFromCurrentImageContext()
}
}UIPasteboard.general.image = image.flattened()https://stackoverflow.com/questions/71093359
复制相似问题