2010-10-10 13 views
7

मैं इस तरह से एक यूआईएममेज को स्केल करना चाहता हूं, कि उपयोगकर्ता UIImage में पिक्सल को बहुत तेज देख सकता है। जब मैं इसे UIImageView पर डालता हूं और ट्रांसफॉर्म मैट्रिक्स को स्केल करता हूं, तो UIImage एंटीअलाइज्ड और चिकना होता है।बिना किसी चीज के यूआईएममेज को कैसे बढ़ाया जाए?

क्या बड़े पिक्सल प्राप्त करने के लिए बस हर पंक्ति और हर कॉलम को दोहराकर बड़े बिटकमैप संदर्भ में प्रस्तुत करने का कोई तरीका है? ऐसा कैसे किया जा सकता था?

+0

अपने पैमाने कारक क्या है? ध्यान रखें कि केवल x2, x3, x4 आदि के लिए आप "तेज" परिणाम प्राप्त करने की उम्मीद कर सकते हैं। – Eiko

+1

ध्यान दें कि इस विधि को निकटतम पड़ोसी इंटरपोलेशन के रूप में जाना जाता है। – BoltClock

उत्तर

20

#import <QuartzCore/CALayer.h>

view.layer.magnificationFilter = kCAFilterNearest

+3

ध्यान दें कि यह काम नहीं करता है अगर आपने UIImageView के लिए UIImage बनाया है [UIImage imageWithCIImage: ci]; – marcelnijman

+2

इसके अलावा, 'view.layer.shouldRasterize = YES' का उपयोग करें। यह समस्या से बचने के लिए है जहां कुछ छवियां प्रत्येक पिक्सेल के लिए 4 पिक्सेल दिखाती हैं। –

+0

@ पीटर डीवेज़, यह बहुत अच्छा है और मेरा उद्देश्य प्राप्त करता है, लेकिन मैं पूछना चाहता हूं, जब मैं 'आवर्धनफिल्टर = केसीएफ़िल्टररिएस्ट' का उपयोग करता हूं, तो क्या बड़े और तेज पिक्सल वास्तव में छवि के मूल पिक्सल को बढ़ाते हैं, या सिर्फ कुछ प्रोसेसिंग द्वारा उत्पादित होते हैं? धन्यवाद ! – Suge

2

जब बिटमैप संदर्भ में सीधे ड्राइंग, हम उपयोग कर सकते हैं:

CGContextSetInterpolationQuality(myBitmapContext, kCGInterpolationNone); 

मैं CGContextDrawImage very slow on iPhone 4

+0

यही वह जवाब है जिसे मैं ढूंढ रहा था !!! – fpg1503

1

पर इस पाया मैं भी एक उप-परत पर इस कोशिश कर रहा था () और मैं इसे काम नहीं कर सका, यह अभी भी धुंधला था। यह मैं नहीं था क्या है:

const CGFloat PIXEL_SCALE = 2; 
layer.magnificationFilter = kCAFilterNearest; //Nearest neighbor texture filtering 
layer.transform = CATransform3DMakeScale(PIXEL_SCALE, PIXEL_SCALE, 1); //Scale layer up 
//Rasterize w/ sufficient resolution to show sharp pixels 
layer.shouldRasterize = YES; 
layer.rasterizationScale = PIXEL_SCALE; 
+0

ड्राइव-डाउनवॉट्स के लिए धन्यवाद ... दिमाग बता रहा है कि इस जवाब के साथ समस्या क्या है? – Eliot

-1

UIImage लिए CIImage से बनाए गए आप उपयोग कर सकते हैं:

imageView.image = UIImage(CIImage: ciImage.imageByApplyingTransform(CGAffineTransformMakeScale(kScale, kScale))) 
संबंधित मुद्दे