2011-07-01 3 views
3

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

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

ответ

4

Конечно, вы можете. Преобразуйте 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

Вы также можете использовать 'UIImagePNGRepresentation (IMG)' – akashivskyy

+0

Конечно, - я не знаю, какой из них он предпочитает, но это хорошая точка. +1 – Pripyat

+0

Спасибо, Дэвид .. это работает – Tariq

1

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

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

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

0

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

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


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

// do stuff 

} 
Смежные вопросы