Heim > Fragen und Antworten > Hauptteil
如题
UIImageView *shareImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, IMG_WIDTH*Big_Time, IMG_HEIGHT*Big_Time)];
Big_Time是3 里面的图片的宽和高我也同比放大了3倍 但是就是有一些模糊 这是为什么
这是放大图片的函数
- (UIImage *)clipImageWithScaleWithsize:(CGSize)asize
{
UIImage *newimage;
UIImage *image = self;
if (nil == image) {
newimage = nil;
}
else{
CGSize oldsize = image.size;
CGRect rect;
if (asize.width/asize.height > oldsize.width/oldsize.height) {
rect.size.width = asize.width;
rect.size.height = asize.width*oldsize.height/oldsize.width;
rect.origin.x = 0;
rect.origin.y = (asize.height - rect.size.height)/2;
}
else{
rect.size.width = asize.height*oldsize.width/oldsize.height;
rect.size.height = asize.height;
rect.origin.x = (asize.width - rect.size.width)/2;
rect.origin.y = 0;
}
UIGraphicsBeginImageContext(asize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToRect(context, CGRectMake(0, 0, asize.width, asize.height));
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
UIRectFill(CGRectMake(0, 0, asize.width, asize.height));//clear background
[image drawInRect:rect];
newimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return newimage;
}
这是将UIimageview转化成图片
+(UIImage *)imageWithView:(UIView *)view
{
UIGraphicsBeginImageContext(view.bounds.size);
CGContextRef currnetContext = UIGraphicsGetCurrentContext();
[view.layer renderInContext:currnetContext];
// 从当前context中创建一个改变大小后的图片
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
// 使当前的context出堆栈
UIGraphicsEndImageContext();
return image;
}
ringa_lee2017-04-18 09:06:49
不是代码问题,是图片本身问题,图像由成千上万像素点构成的,而图像的清晰程度由自身的分辨率决定,分辨率越高,显示越清晰。(图像分辨率是单位英寸包含的像素点数)
就png格式的图片来说吧,如果图片本身分辨率是640*960,如果要显示小于或者等于图片自身大小没什么问题,如果要显示大于图片自身分辨率的图像,模糊是必然的,像素点总数不变,但是显示图片的尺寸变大了,那么一个单位内的像素点变少了,对应的分辨率也变小了,图片自然会模糊。
如果想解决当前你遇到的问题,就让UI出图的时候出高分辨率的图像。
希望能解决你的问题!
阿神2017-04-18 09:06:49
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
UIImage *copied = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
放大了图片自然模糊。也可以试试iOS7,新的转换方式吧。
迷茫2017-04-18 09:06:49
这种位图放大,必然会模糊。
只有矢量图不会模糊。
不知道你想做什么呢?你的代码达到的效果就是截屏。
如果你想做图片编辑一类的事儿,那么需要拿到图片的原图,再在更大的画布里做绘制,用小图片就是会模糊的。