Когда я использую UIImagePNGRпредпредставление или UIImageJPEGRепредставление для преобразования UIImage в NSdata, размер изображения слишком сильно увеличивается.
Действия по воспроизведению:
1) Откройте Xcode и выберите новый проект как приложение с одним представлением
2) Откройте ViewController.xib и добавьте две кнопки с именем i) Test Online Image ii) Проверьте локальное изображение
3) Добавить два IBActions
i) -(IBAction)ClickLocalImageTest:(id)sender;
ii) -(IBAction)ClickOnLineImageTest:(id)sender;
4) Подключите "Test Online Image" к " -(IBAction)ClickOnLineImageTest:(id)sender
"
и "Проверить локальное изображение" на " -(IBAction)ClickLocalImageTest:(id)sender
;"
5) impalment " -(IBAction)ClickLocalImageTest:(id)sender
как -(IBAction)ClickLocalImageTest:(id)sender
ниже
- (IBAction)ClickLocalImageTest:(id)sender {
NSLog(@"*************Test Local Image****************\n");
NSString *path=[[NSBundle mainBundle] pathForResource:@"hero_ipad_retina" ofType:@"jpg"];
NSLog(@"Before testing image size is :<---- %u kb",[[NSData dataWithContentsOfFile:path] length]/1024);
UIImage *img = [UIImage imageNamed:@"hero_ipad_retina.jpg"];
NSLog(@"UIImagePNGRepresentation: image size is---->: %u kb",[UIImagePNGRepresentation(img) length]/1024);
NSLog(@"UIImageJPEGRepresentation with scale 1.0: image size is---->: %u kb \n",[UIImageJPEGRepresentation(img, 1.0) length]/1024);
NSLog(@"*************Completed test****************\n\n\n\n");
}
6) impalment " - (IBAction)ClickOnLineImageTest:(id)sender
в следующем порядке
- (IBAction)ClickOnLineImageTest:(id)sender {
NSLog(@"*************Test Online Image****************\n");
NSLog(@"Before testing image size is :<---- %u kb",[[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://images.apple.com/home/images/hero_ipad_retina.jpg"]] length]/1024);
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://images.apple.com/home/images/hero_ipad_retina.jpg"]]];
NSLog(@"UIImagePNGRepresentation: image size is---->: %u kb",[UIImagePNGRepresentation(img) length]/1024);
NSLog(@"UIImageJPEGRepresentation with scale 1.0: image size is---->: %u kb \n",[UIImageJPEGRepresentation(img, 1.0) length]/1024);
NSLog(@"*************Completed test****************\n\n\n\n");
}
7) Пожалуйста, скачайте изображение "hero_ipad_retina.jpg" здесь и сохраните в своих ресурсах под названием "hero_ipad_retina.jpg"
7) Теперь запустите этот проект на Xcode 4.0 позже и IOS3.0 выше SDK
**
Expected Results:
1)Click on "Test Online Image" button result should be as following
*************Test Online Image****************
Before testing image size is :<---- 78 kb
UIImagePNGRepresentation: image size is---->: 78 kb
UIImageJPEGRepresentation with scale 1.0: image size is---->: 78 kb
*************Completed test****************
2)1)Click on "Test Local image" button result should be as following
*************Test Local Image****************
Before testing image size is :<---- 78 kb
UIImagePNGRepresentation: image size is---->: 78 kb
UIImageJPEGRepresentation with scale 1.0: image size is---->: 78 kb
*************Completed test****************
Actual Results:
1)Click on "Test Online Image" button result should be as following
*************Test Online Image****************
Before testing image size is :<---- 78 kb
UIImagePNGRepresentation: image size is---->: 480 kb
UIImageJPEGRepresentation with scale 1.0: image size is---->: 180 kb
*************Completed test****************
2)1)Click on "Test Local image" button result should be as following
*************Test Local Image****************
Before testing image size is :<---- 78 kb
UIImagePNGRepresentation: image size is---->: 480 kb
UIImageJPEGRepresentation with scale 1.0: image size is---->: 180 kb
*************Completed test******************
Мой вопрос:
почему он увеличивает его размер? и каков оптимизированный способ преобразования изображения в NSData?
Примечания: загрузите изображение "hero_ipad_retina.jpg" отсюда и сохраните в своих ресурсах