Note that there are some explanatory texts on larger screens.

plurals
  1. POImage negative distortion on iOS 4.3
    primarykey
    data
    text
    <p>I guess, why I get image distortion on my app, when I use iOS 4.3 on iPad Simulator and device. Look at the screenshot. The same image is displayed normally on iOS 5.1 Simulator and device. Look at the second screenshot... How should I manage this? May be it is possible to write some code before displayed the JPEG? <img src="https://i.stack.imgur.com/7YPGq.png" alt="Distorted on iOS 4.3"> <img src="https://i.stack.imgur.com/5frct.png" alt="Normal on iOS 5.1"> Unfortunately, I have to repair it, coz my app must work on iOS 4.3 somehow.</p> <p>This is a method, that is used for the generation of thumbs: </p> <pre><code>- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize { UIImage *sourceImage = self; UIImage *newImage = nil; CGSize imageSize = sourceImage.size; CGFloat width = imageSize.width; CGFloat height = imageSize.height; CGFloat targetWidth = targetSize.width; CGFloat targetHeight = targetSize.height; CGFloat scaleFactor = 0.0; CGFloat scaledWidth = targetWidth; CGFloat scaledHeight = targetHeight; CGPoint thumbnailPoint = CGPointMake(0.0,0.0); if (CGSizeEqualToSize(imageSize, targetSize) == NO) { CGFloat widthFactor = targetWidth / width; CGFloat heightFactor = targetHeight / height; if (widthFactor &gt; heightFactor) scaleFactor = widthFactor; // scale to fit height else scaleFactor = heightFactor; // scale to fit width scaledWidth = width * scaleFactor; scaledHeight = height * scaleFactor; // center the image if (widthFactor &gt; heightFactor) { thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; } else if (widthFactor &lt; heightFactor) { thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; } } UIGraphicsBeginImageContext(targetSize); // this will crop CGRect thumbnailRect = CGRectZero; thumbnailRect.origin = thumbnailPoint; thumbnailRect.size.width = scaledWidth; thumbnailRect.size.height = scaledHeight; [sourceImage drawInRect:thumbnailRect]; newImage = UIGraphicsGetImageFromCurrentImageContext(); if(newImage == nil) NSLog(@"could not scale image"); //pop the context to get back to the default UIGraphicsEndImageContext(); return newImage; } </code></pre> <p>However, if I don't use this to prepare my image, it is still negative, but works more slow, because images are resized automatically. </p> <p>This method is used to display image: </p> <pre><code>-(void) setImage:(UIImage*)image forState:(UIControlState) state { [self.buttonView setImage:image forState:state]; } </code></pre> <p>this way: </p> <pre><code>[current setImage:thumb forState:UIControlStateNormal]; </code></pre> <p>Yeah, I forgot to mention, that these guys are just custom buttons of a view controller. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload