Swift를 통해 데이터베이스에 이미지를 저장하고 검색할 때의 요점

5685 단어 XcodeSwiftiOS
이번에는 iOS 8 이상에서 swift를 사용하여 이미지를 데이터베이스에 저장하는 방법과 얻은 방법에 대해 필기하고 싶습니다.
이 곳에서 이미지 데이터를 어떻게 변환하여 데이터베이스에 저장하고 가져올 때 어떻게 이미지로 변환하는지 처리하지만 POST와 JSON 수신을 처리하지 않는 등 상세한 처리를 양해해 주십시오.
특별히 필요한 창고가 없습니다.

컨디션

  • xcode 6.3
  • swift 1.2
  • MySQL 5.5 (charset: UTF-8)
  • 개시하다


    먼저 데이터베이스를 편집합니다.
    MySQL의 경우 PHPMyAdmin 등에서 사용자가 정의한 테이블에 이미지 저장용 열을 추가합니다.

    유형은 이미지의 최대 크기입니다. 다음과 같은 종류가 있습니다. 각자의 구상에 따라 설정하십시오.
    이번에는 MEDIUMBLOB를 선택했습니다.
    타입
    최대 치수
    TINYBLOB
    256byte
    BLOB
    64KB
    MIDIUMBLOB
    16MB
    LONGBLOB
    4GB
    준비는 여기까지.

    데이터베이스에 이미지 저장


    데이터베이스에 보낼 때 UIImage 등의 정보를 직접 보낼 수 없기 때문에 BASE64에서 NSData로 변환된 데이터를 String으로 설정하고 보냅니다.
    //UIImageをデータベースに格納できるStringに変換する
    func Image2String(image:UIImage) -> String? {
    
        //画像をNSDataに変換
        let data:NSData = UIImagePNGRepresentation(image)
    
        //NSDataへの変換が成功していたら
        if let pngData = data {
    
              //BASE64のStringに変換する
              let encodeString:String =  
              pngData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
    
              return encodeString
    
         }
    
         return nil
    
    }
    
    NSData로의 전환은 위에서 PNG이지만 UIImageJPEGrepresentation을 사용하면 JPEG도 전환할 수 있습니다.
    JPEG를 사용할 때는 두 번째 매개변수에 압축률을 넣어야 합니다.
    이후 이 함수의 반환값이 nil이 아니라면 POST를 데이터베이스에 저장하면 됩니다.

    데이터베이스에서 가져온 문자열을 UIImage로 다시 반환


    데이터베이스에서 가져온 문자열을 매개 변수로 변환하고 UIImage로 변환하며 반환하는 함수가 필요합니다.
    //StringをUIImageに変換する
    func String2Image(imageString:String) -> UIImage?{
    
            //空白を+に変換する
            var base64String = imageString.stringByReplacingOccurrencesOfString(" ", withString:"+",options: nil, range:nil)
    
            //BASE64の文字列をデコードしてNSDataを生成
            let decodeBase64:NSData? = 
            NSData(base64EncodedString:base64String, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
    
            //NSDataの生成が成功していたら
            if let decodeSuccess = decodeBase64 {
    
                //NSDataからUIImageを生成
                let img = UIImage(data: decodeSuccess)
    
                //結果を返却
                return img
            }
    
            return nil
    
    }
    
    
    상술한 함수 중 가장 관건적인 것은 공백을 +로 바꾸는 줄이다.
    BASE64에서는 반각 영숫자 외에도 "/", "+", "="기호를 사용합니다.그러나 swift에서 문자열로 변환하여 데이터베이스에 저장하는 과정에서 '+' 는 공백으로 저장됩니다.따라서 데이터베이스에서 가져온 문자열도 마찬가지로'+'부분이 모두 비어 있으므로 이를 일괄적으로 제거하기 위해 st r i n g By R e lacing Occurence Ofrating 함수를 사용하여 변환합니다.
    이후 행은 전송할 때 역처리를 수행하고 NSData를 UIImage로 변환합니다.
    사용할 때 함수가 nil이 아닌 값을 반환하면 UIImageView가 표시됩니다.이미지 등으로 설정하면 이미지로 안전하게 표시됩니다.

    좋은 웹페이지 즐겨찾기