2013-02-06 36 views
16

Tôi cố gắng để xóa hình ảnh sử dụng đoạn mã saudrawInRect: mất chất lượng độ phân giải hình ảnh

CGColorRef strokeColor = [UIColor whiteColor].CGColor; 

UIGraphicsBeginImageContext(imgForeground.frame.size); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
[imgForeground.image drawInRect:CGRectMake(0, 0, imgForeground.frame.size.width, imgForeground.frame.size.height)]; 

CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetLineWidth(context, 10); 

CGContextSetStrokeColorWithColor(context, strokeColor); 
CGContextSetBlendMode(context, kCGBlendModeClear); 

CGContextBeginPath(context); 
CGContextMoveToPoint(context, lastPoint.x, lastPoint.y); 
CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y); 
CGContextStrokePath(context); 

imgForeground.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Nhưng tôi chỉ tìm hiểu hình ảnh mất độ phân giải của nó do drawInRect.

BeforeAfter

+0

Tải lên "trước" và "sau" hình ảnh chụp màn hình sẽ được giúp đỡ rất nhiều cho một câu hỏi liên quan đến hình ảnh. – dasblinkenlight

+0

Tải lên hình ảnh Vui lòng tham khảo –

+0

Không rõ ý của bạn là "mất chất lượng độ phân giải hình ảnh". Có lẽ bạn có thể cố gắng cụ thể hơn một chút. – ipmcc

Trả lời

38

Bạn nên đi với UIGraphicsBeginImageContextWithOptions thay vì UIGraphicsBeginImageContext, do đó một yếu tố quy mô có thể được xác định.

Ví dụ, điều này sẽ sử dụng các yếu tố quy mô của màn hình chính của thiết bị:

UIGraphicsBeginImageContextWithOptions(imgForeground.frame.size, NO, 0); 
+0

Điều gì xảy ra nếu hình ảnh không có kích thước của Cửa sổ? Hơn những gì cần thay thế bằng imgForeground.window.screen.scale –

+0

Xin chào! Vâng, thông số thứ 3 là tỷ lệ và không phải bất kỳ thứ nguyên nào (nghĩa là kích thước)! Đối với tất cả các iPhone, iPodTouches, vv mà không có Retina Hiển thị nó sẽ trở lại một 1.0f, trong khi Retina Display thiết bị sẽ cung cấp cho một 2.0f. –

+1

thay thế 'imgForeground.window.screen.scale' bằng '[[UIScreen màn hình chính]]', do đó, nó trở nên rõ ràng hơn rằng quy mô của "màn hình" có nghĩa là! –

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