आप मैन्युअल रूप से सही आकार और सामग्री की छवि उत्पन्न कर सकते हैं, और इसे NSImageView की छवि के रूप में सेट कर सकते हैं ताकि NSImageView को कुछ भी करने की आवश्यकता न हो।
NSImage *newImg = [self resizeImage:sourceImage size:newSize];
[aNSImageView setImage:newImg];
निम्नलिखित फ़ंक्शन नए आकार को फिट करने के लिए एक छवि का आकार बदलता है, पहलू अनुपात को बरकरार रखता है। यदि छवि नए आकार की तुलना में छोटी है, तो इसे बढ़ाया गया है और नए फ्रेम से भरा हुआ है। यदि छवि नया आकार से बड़ा है, यह आकार छोटा है, और नया फ्रेम
- (NSImage*) resizeImage:(NSImage*)sourceImage size:(NSSize)size{
NSRect targetFrame = NSMakeRect(0, 0, size.width, size.height);
NSImage* targetImage = [[NSImage alloc] initWithSize:size];
NSSize sourceSize = [sourceImage size];
float ratioH = size.height/ sourceSize.height;
float ratioW = size.width/sourceSize.width;
NSRect cropRect = NSZeroRect;
if (ratioH >= ratioW) {
cropRect.size.width = floor (size.width/ratioH);
cropRect.size.height = sourceSize.height;
} else {
cropRect.size.width = sourceSize.width;
cropRect.size.height = floor(size.height/ratioW);
}
cropRect.origin.x = floor((sourceSize.width - cropRect.size.width)/2);
cropRect.origin.y = floor((sourceSize.height - cropRect.size.height)/2);
[targetImage lockFocus];
[sourceImage drawInRect:targetFrame
fromRect:cropRect //portion of source image to draw
operation:NSCompositeCopy //compositing operation
fraction:1.0 //alpha (transparency) value
respectFlipped:YES //coordinate system
hints:@{NSImageHintInterpolation:
[NSNumber numberWithInt:NSImageInterpolationLow]}];
[targetImage unlockFocus];
return targetImage;}
यदि आप किसी पहलू अनुपात विकल्पों के साथ एक चाहते हैं: [यहां आप जाएं] (https://github.com/spilliams/NSToolkit/blob/master/NSImage%2BResize.m)। –