Interesting one this. I did do a bit Googling on the it but here we go. I have this png file. What I want to do is have it on my iPhone and send it to a server application on Windows. I use something like this:
NSString *filePath = [[NSBundle mainBundle] pathForResource:IconFile ofType:@"png"];
NSData *icon = [[NSData alloc ] initWithContentsOfFile:filePath];
NSLog(@"File path is %@",filePath);
NSLog(@" Bytes to send in Icon File %d",icon.length);
Now this works just fine when I am on the iPhone simulator. When I go to the device though the png format grows in size. For example I had one that was 2514 bytes and went up to 2652 bytes. When I transmit this file – its not able to be read by the Windows app.
So I assume that when a png file gets copied over in the resource bundle – it must get optimised or something. I can get round it by changing the extension to say .txt – then the file doesnt change.
Does anyone know why that is ? And can you prevent it being changed as I’d rather keep the correct extension. I have seen that png formats need to be converted when you get them from the iPhone but I dont know why this would happen when you upload one and it doesn’t work in the simulator mode. Happens with both iPhone and iPad at iOS 5.
The modifying of the png images can be prevented in the build settings – under Packaging there is an option to compress PNG files:
Setting this to NO should solve your problem.