2011-07-13 36 views
12

Tôi muốn tạo Thư viện ảnh làm thư viện ảnh hiện có trong iPhone. Tôi thêm hình ảnh trong scrollviewer được chọn từ thư viện ảnh. Trước khi thêm hình ảnh, tôi thay đổi kích thước hình ảnh đã chọn và đặt nó vào ImageView Control.But khi tôi so sánh với chất lượng hình ảnh được thêm vào với chất lượng hình ảnh thư viện ảnh iPhone, hình ảnh kiểm soát của tôi không tốt. Làm thế nào để mang lại chất lượng và vấn đề tràn bộ nhớ withou.Cách đổi kích thước hình ảnh với chất lượng tốt trong iPhone

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
    // Create a bitmap context. 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 

} 

Trả lời

20

Tôi cũng gặp sự cố này. Tôi nghĩ bạn đang sử dụng iPhone 4 với màn hình Retina. Ngay cả khi bạn không, bạn nên giải thích cho nó. Thay vì UIGraphicsBeginImageContext(), hãy sử dụng UIGraphicsBeginImageContextWithOptions() và sử dụng thuộc tính scale của UIScreen cho đối số thứ ba. Tất cả các thiết bị iOS đều có thuộc tính scale, trên iPhone 4 nó được thiết lập là 2.0; phần còn lại, khi tôi viết nó, nó được đặt thành 1.0.

Vì vậy, mã của bạn, với những thay đổi, trở nên

-(UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
    // Create a bitmap context. 
    UIGraphicsBeginImageContextWithOptions(newSize, YES, [UIScreen mainScreen].scale); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 

} 
+4

Thay vì sử dụng '[UIScreen mainScreen] .scale' bạn chỉ có thể sử dụng' image.scale'. – memmons

+0

Tôi đọc nhiều bài viết và giải pháp đơn giản này thực sự hoạt động khá tốt mà không mất quá nhiều chất lượng từ 2K + xuống 100px. Chỉ cần thêm '... WithOptions()' đã thực hiện thủ thuật. – denikov

+2

Tôi thấy thú vị là sau khi thử nhiều giải pháp phức tạp, phương pháp 5 lớp lót là phương pháp hoạt động tốt nhất và có chất lượng tốt nhất. –

Các vấn đề liên quan