0

我有一个 UIscrollView 我以这种方式在其中显示图像

- (UIImage *)pageControlImageWithIndex:(NSInteger)index{
NSString *imagePath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/t%d.jpg",index];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:imagePath];
return [UIImage imageWithData:[fileHandle readDataToEndOfFile]];

}

UIImage *image = [self pageControlImageWithIndex:pageNumber];
UIGraphicsBeginImageContext(CGSizeMake(320.0, 164));
[image drawInRect:CGRectMake(0, 0, 320.0, 164.0)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:newImage];

但图像出现一些模糊

在此处输入图像描述

同时在其他视图中以这种方式显示相同的图像(在 UIImageView 内)

NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:[NSHomeDirectory() stringByAppendingFormat:@"/Documents/t%d.jpg",topicNum]];
[topicPicImageView setImage:[UIImage imageWithData:[fileHandle readDataToEndOfFile]]];

生产这种品质

在此处输入图像描述

如何在 UIScrollView 中获得相同质量的图像?

  • 图像尺寸为 640 * 360
  • 两个图像容器尺寸为 320 * 164
4

1 回答 1

2

UIGraphicsBeginImageContext将创建一个比例为 1.0 或非视网膜的上下文。但是您很可能希望创建一个与您的设备规模相匹配的上下文。使用新UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale)功能。

代替

UIGraphicsBeginImageContext(CGSizeMake(320.0, 164));

UIGraphicsBeginImageContextWithOptions(CGSizeMake(320.0, 164), YES, 0.0);

0.0 作为比例参数表示“使用设备主屏幕比例”。如果您的图像具有透明度,您希望使用 NO 作为第二个参数。

于 2013-07-17T07:57:22.760 回答