UIImage → NSData → NSString →
====parse====
→ Railsで保存
取り出すときは、
Rails→
====parse====
→ NSString → NSData → UIImage
すればいいものを、無駄に
AESでencodeしてとか考えていたら、時間が経ってしまいました。
まずは、保存の仕方
imageはUIImage
NSData* imageData = [[NSData alloc] initWithData:UIImagePNGRepresentation(image)];
NSString* base64str = [imageData base64EncodedStringWithOptions:0];
これでstring型でRailsで保存できる。
もしmongoidでバイナリーデータで保存したいなら、
もしmongoidでバイナリーデータで保存したいなら、
class Image
include Mongoid::Document
include Mongoid::Timestamps
field :image_num, type: Integer
field :image_manager_id, type: String
field :data
belongs_to :image_manager
def self.save_from_profile(image_data, user)
image_manager = user.image_manager
image1 = Image.new(image_manager_id: image_manager.id, image_num: 1, data: BSON::Binary.new(image_data))
image1
end
end
取り出すときは、
Rails
iOS
Rails
image = Image.find(params["image_id"])
image_data = image.data
iOS
NSString* dataString = results[@"data"];
NSData* deData = [[NSData alloc] initWithBase64EncodedString:dataString options:0];
UIImage* tmpImage = [[UIImage alloc] initWithData:deData];
できてしまえば、そりゃそうかという感じです。
本当は、googleDriveとかdropboxとかflickrとかTumblrとか
外部サービスをサーバー代わりに利用して、
UIImageのデータを保存して、
経費節約しようとか考えていたんですが、
結局サーバー持たずに直接iOSと通信はできないっぽい。
parse.comでそんなことができるみたいですが、なんかある程度まで行くと月1万とかかかるみたいなんで、諦めて自分のサーバーに保存することになりました。笑
ややこしく考えすぎた。。ふぅ
[参考]
Base64 Decoding in iOS 7+/Github