ASIHTTP: загрузить UIImage?

Может кто-нибудь сказать мне, как я могу использовать объект ASIHTTPRequest в Objective-c для загрузки объекта UIImage? Нужно ли мне преобразовать его в объект NSData?

(Это URL для загрузки аватара)

E.g. 

UIImage *toUpload = [UIImage imageNamed:@"test.jpg"]

URL: "http://www.example.com/api/users/avatar/upload?access_token=12345"
RequestType: PUT

person dpigera    schedule 22.01.2011    source источник


Ответы (1)


Вот пример использования ASIFormRequest, который также попытается сжать изображение до заданного максимального размера.

    //Compress the image
CGFloat compression = 0.9f;
CGFloat maxCompression = 0.1f;
int maxFileSize = 250*1024;

NSData *imageData = UIImageJPEGRepresentation(yourImage, compression);

while ([imageData length] > maxFileSize && compression > maxCompression)
{
    compression -= 0.1;
    imageData = UIImageJPEGRepresentation(yourImage, compression);
}

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:whereYourServerEndPointIs.com]];

[request addData:imageData withFileName:@"someFileName.jpeg" andContentType:@"image/jpeg" forKey:@"uploadedImage"];
person kgutteridge    schedule 22.01.2011
comment
Отличный ответ. У меня есть закладка для проекта, над которым я работаю с С# - person Aurum Aquila; 23.01.2011
comment
Отличный ответ. Дизайн цикла while действительно полезен. - person Di Wu; 23.01.2011
comment
Есть ли причина использовать addData вместо setData? - person Tim; 31.01.2012