Конвертировать UIImage в байты - PullRequest
3 голосов
/ 01 июля 2011

Я получаю UIImage, используя UIImagePickerController.Как я могу вычислить количество байтов, хранящихся в этом изображении, в килобайтах / мегабайтах?

Используя эти значения, я должен сделать логику, чтобы пользователь не мог добавлять изображения размером более 1 МБ

Ответы [ 3 ]

4 голосов
/ 01 июля 2011

Конечно, вы можете. Преобразуйте UIImage в объект NSData, который обладает свойством length, которое даст вам его размер в байтах. Тогда вы можете легко рассчитать размер в любой нужной вам единице.

Так, например:

    UIImage *img = [UIImage imageNamed:@"some.png"];
    NSData *dataObj = UIImageJPEGRepresentation(img, 1.0);
    int bytes = [dataObj length];
    //convert into whatever unit you need
1 голос
/ 01 июля 2011

Размер изображения можно получить с помощью следующего метода делегата UIImagePickerController

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{
     if([UIImageJPEGRepresentation(image, 1.0) length]> MAX_SIZE)
     {
         //Code here
     }
}

Здесь, как видите, я преобразовал изображение в данные, и [длина данных] может дать длину в байтах.

0 голосов
/ 01 июля 2011

Вместо того, чтобы мешать пользователю загружать изображения размером более 1 МБ, вы бы лучше обслуживали его, масштабируя и сжимая изображение для экономии места, которое я подозреваю.Однако, чтобы ответить на ваш вопрос, одним из способов будет просто:

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *) info {


NSData *imageData = UIImagePNGRepresentation(image); // Or UIImageJPEGRepresentation 
long sizeInBytes = [imageData length];

// do stuff

}
...