Swift를 통해 데이터베이스에 이미지를 저장하고 검색할 때의 요점
이 곳에서 이미지 데이터를 어떻게 변환하여 데이터베이스에 저장하고 가져올 때 어떻게 이미지로 변환하는지 처리하지만 POST와 JSON 수신을 처리하지 않는 등 상세한 처리를 양해해 주십시오.
특별히 필요한 창고가 없습니다.
컨디션
개시하다
먼저 데이터베이스를 편집합니다.
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가 표시됩니다.이미지 등으로 설정하면 이미지로 안전하게 표시됩니다.
Reference
이 문제에 관하여(Swift를 통해 데이터베이스에 이미지를 저장하고 검색할 때의 요점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/silent0321/items/4253c20e43afdbed8638
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
데이터베이스에 보낼 때 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가 표시됩니다.이미지 등으로 설정하면 이미지로 안전하게 표시됩니다.
Reference
이 문제에 관하여(Swift를 통해 데이터베이스에 이미지를 저장하고 검색할 때의 요점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/silent0321/items/4253c20e43afdbed8638
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//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
}
Reference
이 문제에 관하여(Swift를 통해 데이터베이스에 이미지를 저장하고 검색할 때의 요점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/silent0321/items/4253c20e43afdbed8638텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)