2017-07-26 7 views
3

In meiner App habe ich eine Funktion, um ein Bild von camera zu machen und es auf den Server hochladen. Mein Problem ist, dass, wenn ich Antwort vom Server zurückbekomme, dieses Bild um 90 Grad nach links dreht. Hier ist mein versucht Code:iOS Swift 3 Bild gedreht 90 Grad Links

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
{ 
    self.PickerFrom = self.PickerFrom2 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage 
    { 
     self.AttachmentImageView.image = pickedImage 
    } 
    dismiss(animated: true, completion: nil) 
    uploadGalleryImage(image: self.AttachmentImageView.image!) 
} 

func uploadGalleryImage(image:UIImage) 
{ 
    let imageData: NSData = UIImagePNGRepresentation(image)! as NSData 
    let base64String = imageData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0)) 
    self.AttachedDocumentURL = "data:image/png;base64,\(base64String)" 
} 

AttachedDocumentURL enthält base64sting von aufgenommenem Bild.

+0

, wie das Bild im Server gespeichert wird, das bei 90 Grad gelagert oder bei normalen –

+0

gespeichert, wenn u Telefon in der Kamera nehmen, dass die Bildorientierungseigenschaft selbst haben. Überprüfen Sie also die Rotation und die Rotation entsprechend der Ausrichtung und senden Sie sie an den Server. viel Code im Netz verfügbar oder Sie können sich selbst schreiben. – Ammaiappan

+0

Sie können meine ANS hier überprüfen https://StackOverflow.com/questions/45157225/Want-Fixed-Orientation- But-the-UIimage-Autorate/45157920#45157920 – luckyShubhra

Antwort

6

starten (Reset Sie Bildausrichtung), bevor Sie auf

Server hochladen
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
{ 
    self.PickerFrom = self.PickerFrom2 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage 
    { 
     self.AttachmentImageView.image = pickedImage 
    } 
    dismiss(animated: true, completion: nil) 

    if let updatedImage = self.AttachmentImageView.image?.updateImageOrientionUpSide() { 
     uploadGalleryImage(image: updatedImage) 
    } else { 
     uploadGalleryImage(image: self.AttachmentImageView.image!) 
    } 

} 

func uploadGalleryImage(image:UIImage) 
{ 
    let imageData: NSData = UIImagePNGRepresentation(image)! as NSData 
    let base64String = imageData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0)) 
    self.AttachedDocumentURL = "data:image/png;base64,\(base64String)" 
} 

// Image extension 
extension UIImage { 

    func updateImageOrientionUpSide() -> UIImage? { 
     if self.imageOrientation == .up { 
      return self 
     } 

     UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale) 
     self.draw(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)) 
     if let normalizedImage:UIImage = UIGraphicsGetImageFromCurrentImageContext() { 
      UIGraphicsEndImageContext() 
      return normalizedImage 
     } 
     UIGraphicsEndImageContext() 
     return nil 
    } 
} 
3

Mit dieser gemeinsamen Funktionsorientierung Kopf Bild von jedem zu beheben.

extension UIImage { 

    func fixImageOrientation() -> UIImage? { 


     if (self.imageOrientation == .up) { 
      return self 
     } 

     var transform: CGAffineTransform = CGAffineTransform.identity 


     if (self.imageOrientation == .left || self.imageOrientation == .leftMirrored) { 
      transform = transform.translatedBy(x: self.size.width, y: 0) 
      transform = transform.rotated(by: CGFloat(Double.pi/2.0)) 
     } else if (self.imageOrientation == .right || self.imageOrientation == .rightMirrored) { 
      transform = transform.translatedBy(x: 0, y: self.size.height); 
      transform = transform.rotated(by: CGFloat(-Double.pi/2.0)); 
     } else if (self.imageOrientation == .down || self.imageOrientation == .downMirrored) { 
      transform = transform.translatedBy(x: self.size.width, y: self.size.height) 
      transform = transform.rotated(by: CGFloat(Double.pi)) 
     } else if (self.imageOrientation == .upMirrored || self.imageOrientation == .downMirrored) { 
      transform = transform.translatedBy(x: self.size.width, y: 0) 
      transform = transform.scaledBy(x: -1, y: 1) 
     } else if (self.imageOrientation == .leftMirrored || self.imageOrientation == .rightMirrored) { 
      transform = transform.translatedBy(x: self.size.height, y: 0); 
      transform = transform.scaledBy(x: -1, y: 1); 
     } 


     if let context: CGContext = CGContext(data: nil, width: Int(self.size.width), height: Int(self.size.height), 
             bitsPerComponent: self.cgImage!.bitsPerComponent, bytesPerRow: 0, 
             space: self.cgImage!.colorSpace!, 
             bitmapInfo: self.cgImage!.bitmapInfo.rawValue) { 

      context.concatenate(transform) 

      if (self.imageOrientation == UIImageOrientation.left || 
       self.imageOrientation == UIImageOrientation.leftMirrored || 
       self.imageOrientation == UIImageOrientation.right || 
       self.imageOrientation == UIImageOrientation.rightMirrored) { 
       context.draw(self.cgImage!, in: CGRect(x: 0,y: 0,width: self.size.height,height: self.size.width)) 
      } else { 
       context.draw(self.cgImage!, in: CGRect(x: 0,y: 0,width: self.size.width,height: self.size.height)) 
      } 

      if let contextImage = context.makeImage() { 
       return UIImage(cgImage: contextImage) 
      } 

     } 

     return nil 
    } 
} 
Verwandte Themen