objective-c - ios uiimageview的长宽放大3倍后 图片变模糊的问题
黄舟
黄舟 2017-04-18 09:04:49
0
5
624

如题

 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;
}
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(5)
左手右手慢动作

Ini bukan masalah kod, ia adalah masalah dengan imej itu sendiri. Imej terdiri daripada beribu-ribu piksel, dan kejelasan imej ditentukan oleh resolusinya sendiri. (Resolusi imej ialah bilangan piksel yang terkandung dalam satu unit inci)
Bagi gambar dalam format png, jika resolusi gambar itu sendiri ialah 640*960, tiada masalah jika anda ingin memaparkannya lebih kecil daripada atau sama. kepada saiz gambar itu sendiri. Jika anda ingin memaparkannya lebih besar daripada Blur tidak dapat dielakkan untuk imej dengan resolusi imej itu sendiri dalam satu unit, dan resolusi yang sepadan juga menjadi lebih kecil.
Jika anda ingin menyelesaikan masalah semasa yang anda hadapi, biarkan UI menghasilkan imej resolusi tinggi semasa melukis.
Semoga ini dapat menyelesaikan masalah anda!

阿神
 UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0);
[lihat drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
UIImage *copyed = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Gambar menjadi kabur secara semula jadi apabila dibesarkan. Anda juga boleh mencuba iOS7, kaedah penukaran baharu.

大家讲道理

Apabila melukis, resolusi skrin hendaklah dua kali ganda daripada saiz. Cuba darabkan saiz dengan 2

迷茫

Pembesaran bitmap jenis ini pasti akan menjadi kabur.
Hanya imej vektor tidak akan kabur.

Tidak tahu apa yang anda mahu lakukan? Kesan yang dicapai oleh kod anda ialah mengambil tangkapan skrin.
Jika anda ingin melakukan sesuatu seperti menyunting gambar, anda perlu mendapatkan imej asal dan kemudian melukisnya pada kanvas yang lebih besar Jika anda menggunakan imej yang kecil, ia akan menjadi kabur.

小葫芦

Orang-orang di tingkat bawah telah pun mengatakan perkara yang sama Saya ingin menambah satu perkara lagi: Perenderan CG akan membakar CPU.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan