UFO ET IT

NSData 및 UIImage

ufoet 2020. 12. 2. 22:18
반응형

NSData 및 UIImage


UIImage에서 객체 를로드하려고하는데 NSData샘플 코드가으로 NSImage되었으므로 동일해야한다고 생각합니다. 하지만 이제 이미지를로드하는 중, UIImage로드 NSData문제 를 해결하는 데 가장 좋은 방법이 무엇인지 궁금합니다 .


UIImage에는- initWithData:메소드가 있습니다. 문서에서 : "데이터 매개 변수의 데이터는 시스템에서 지원되는 이미지 유형 중 하나의 파일 형식과 일치하도록 형식화되어야합니다."


나는 시도하지 않았다 UIImageJPEGRepresentation()전에,하지만 UIImagePNGRepresentation나를 위해 잘 작동하고, 간의 변환 NSDataUIImage죽은 간단하다 :

NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];

이미지를 NSdata로 변환하려면 다음을 시도하십시오.

UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);

theData는 NSData이미 데이터를 포함하고 있는 객체 여야합니다 . NSData개체를 사용하기 전에 파일로드 / 다운로드를 수행해야합니다 . NSLogon theData 를 사용하여 검사 하고 유효한 데이터가 포함되어 있는지 확인할 수 있습니다.


코드를 안전하게 실행하려면 함수 UIImagePNGRepresentation이 옵션 값을 반환하므로 데이터와 함께 if-let 블록을 사용하십시오.

if let img = UIImage(named: "Hello.png") {
    if let data:Data = UIImagePNGRepresentation(img) {
       // Handle operations with data here...         
    }
}

참고 : 데이터 는 Swift 3 클래스입니다. Swift 3에서 NSData 대신 데이터 사용

일반 이미지 작업 (예 : png 및 jpg 둘 다) :

if let img = UIImage(named: "Hello.png") {
        if let data:Data = UIImagePNGRepresentation(img) {
               handleOperationWithData(data: data)     
        } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) {
               handleOperationWithData(data: data)     
        }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
     if let image = UIImage(data: data) {
        // Use image...
     }
}

확장을 사용하여 :

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(img)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}

*******
if let img = UIImage(named: "Hello.png") {
      if let data = img.pngRepresentationData {
              handleOperationWithData(data: data)     
      } else if let data = jpegRepresentationData {
              handleOperationWithData(data: data)     
     }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
     if let image = UIImage(data: data) {
        // Use image...
     }
}

참고 URL : https://stackoverflow.com/questions/257400/nsdata-and-uiimage

반응형