문제

나는로드하려고한다 UIImage 객체 NSData, 그리고 샘플 코드가있었습니다 NSImage, 나는 그들이 동일해야한다고 생각합니다. 하지만 이제 이미지를로드하면서 문제 해결에 가장 적합한 것이 무엇인지 궁금합니다. UIImage 로딩 NSData 문제.

도움이 되었습니까?

해결책

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

다른 팁

나는 시도하지 않았다 UIImageJPEGRepresentation() 전에, 그러나 UIImagePNGRepresentation 나에게 잘 작동하고 사이의 전환 NSData 그리고 UIImage 단순하다 :

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

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

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

thedata는 a NSData 이미 데이터가 포함 된 객체. 파일로드/다운로드를 NSData 사용하기 전에 물체. 사용하여 검사 할 수 있습니다 NSLog thedata에서 유효한 데이터가 포함되어 있는지 확인하십시오.

코드를 안전하게 실행하려면 기능 uiimagepngrepresentation returns, 선택적 값으로 데이터와 함께 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...
     }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top