2012-06-27 3 views
0

Я пишу приложение, которое дает пользователю возможность изменить размер изображения, которое они берут, и загрузить его в службу. Изменение размера кажется прекрасным, но оно не сохраняет повторно созданный образ в нужном месте, потому что приложение, похоже, не думает, что загружена фотография.Хранение изображения с измененным размером в Objective C

Обратите внимание, что первая функция в инструкции if (в отношении «normal_size») работает нормально. Я попытался воссоздать эти две строки в дополнительных параметрах размера, но я не могу понять, почему он не хранит его. Это сводит меня с ума. Вот код:

// Set image dictionaries 
iInfoDict = [[NSDictionary alloc] initWithDictionary:info]; 
NSLog(@"infor ===== %@", info); 
UIImage* image =[info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
NSLog(@"iImage name === %@", iImage); 

// Determines path of image taken/chosen 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"image.jpg"]; 

CGSize size; 

// Not sure what this does other than dismissing the pickerViewController 

NSData* data = UIImageJPEGRepresentation(image, 0.9); 
[data writeToFile:appFile options:nil error:nil]; 
NSLog(@"Documents ==== %@", documentsDirectory); 
[picker dismissModalViewControllerAnimated:YES]; 
// photo.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

// IMAGE RESIZE CODE 

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"normal_image"])  
{ 
    [photoData setObject:[iInfoDict objectForKey:@"UIImagePickerControllerOriginalImage"] forKey:@"image"]; 
    photo.image = [iInfoDict objectForKey:@"UIImagePickerControllerOriginalImage"]; 
} 
else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"small_image"]) 
{ 
    CGSize size = CGSizeMake (600, 450); 
    UIImage *origImage = [iInfoDict objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    UIImage *destImage = [origImage resizedImage:size interpolationQuality:kCGInterpolationHigh]; 

    NSLog(@"Image Size: %@", NSStringFromCGSize(destImage.size)); 
    [photoData setObject:destImage forKey:@"image"]; 

    photo.image = destImage; 
} 

ответ

0

Либо я не понимаю ваш вопрос, либо вы не понимаете, что делаете. Я подозреваю последнее, основанное на комментарии // Not sure what this does other than dismissing the pickerViewController, за которым сразу следуют две строки, которые записывают неровный образ в каталог документов.

Вы, вероятно, захотите изменить размер изображения до, вы его выписываете, поэтому я предлагаю переместить запись до конца, после того как вы изменили размер.

Удалить две линии:

NSData* data = UIImageJPEGRepresentation(image, 0.9); 
[data writeToFile:appFile options:nil error:nil]; 

И, в конце концов, вставить эти две строки (без гарантии, написанные по памяти):

NSData* data = UIImageJPEGRepresentation(photo.image, 0.9); 
[data writeToFile:appFile options:nil error:nil]; 
+0

Спасибо за ответ. Прокомментированный код старый, и я еще не удалил его. Есть функция, которая подталкивает фотографию к службе, и первое, что она выталкивает, это словарь под названием «данные», и кажется, что я пишу данные после изменения размера изображения, но по какой-либо причине изображение по-прежнему отображается полноразмерным, когда мы загружаем его на веб-сайт. –

+0

О, мой бог, это была фотография. Изображение, а не изображение, которое было написано, было проблемой. Невероятно. –