Kiedy używam UIImagePNGRepresentation lub UIImageJPEGRepresentation do konwersji UIImage do NSData, rozmiar obrazu jest zbyt dużo wzrosły.Kiedy używam UIImagePNGRepresentation lub UIImageJPEGRepresentation do konwersji UIImage do NSData, rozmiar obrazu jest zbyt dużo wzrosła
Kroki prowadzące do odtworzenia:
1) Otwórz Xcode i wybierz nowy projekt jako aplikacji opartej pojedynczy widok
2) Otwarte ViewController.xib i dodać dwa przyciski o nazwach jak ja) image Test Online ii) test obraz lokalny
3) Dodaj dwa IBActions
i) -(IBAction)ClickLocalImageTest:(id)sender;
ii) -(IBAction)ClickOnLineImageTest:(id)sender;
4) Podłączyć "obraz test online" na "-(IBAction)ClickOnLineImageTest:(id)sender
"
i "Przetestuj obraz lokalny" na "-(IBAction)ClickLocalImageTest:(id)sender
;"
5) Impalement "-(IBAction)ClickLocalImageTest:(id)sender
" metoda jak w następujący sposób
- (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) Impalement "- (IBAction)ClickOnLineImageTest:(id)sender
" Sposób następujące
- (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) Proszę pobrać "hero_ipad_retina.jpg" obraz z here i zapisz w swoich zasobach o nazwie "hero_ipad_retina.jpg"
7) Teraz uruchom ten projekt na Xcode 4 0,0 później i IOS3.0 powyżej 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******************
Moje pytanie:
dlaczego jest zwiększenie jej rozmiaru? i jaki jest zoptymalizowany sposób konwersji obrazu na NSData?
Uwagi: pobierz "hero_ipad_retina.jpg" obraz z here i zapisać w zasobach
Wow. Pierwsze pytanie, które przeczytałem, wygląda jak radar jabłkowy ... Nie jestem pewien, co o tym myślę. – CodaFi
Powtórzyłeś dwukrotnie swój test lokalnego obrazu ... – foundry
dziękuję, zredagowałem moje pytanie –