Ausgabe
Ich habe eine NSBitmapImageRep
Größe W
x H
.
Ich erstelle NSImage
und rufe an addRepresentation:
. Dann muss ich die Größe ändern NSImage
.
Ich habe die setSize
Methode versucht, aber es funktioniert nicht. Was soll ich machen?
Lösung
Bearbeiten:
Da diese Antwort immer noch die akzeptierte Antwort ist, aber ohne Berücksichtigung von Retina-Bildschirmen geschrieben wurde, werde ich weiter unten im Thread direkt auf eine bessere Lösung verlinken: Objective-C Swift 4
Da die Methode von Paresh völlig korrekt, aber seit 10.8 veraltet ist, poste ich den funktionierenden 10.8-Code unten. Alle Anerkennung für Pareshs Antwort.
- (NSImage *)imageResize:(NSImage*)anImage newSize:(NSSize)newSize {
NSImage *sourceImage = anImage;
[sourceImage setScalesWhenResized:YES];
// Report an error if the source isn't a valid image
if (![sourceImage isValid]){
NSLog(@"Invalid Image");
} else {
NSImage *smallImage = [[NSImage alloc] initWithSize: newSize];
[smallImage lockFocus];
[sourceImage setSize: newSize];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[sourceImage drawAtPoint:NSZeroPoint fromRect:CGRectMake(0, 0, newSize.width, newSize.height) operation:NSCompositingOperationCopy fraction:1.0];
[smallImage unlockFocus];
return smallImage;
}
return nil;
}
Beantwortet von – Git.Coach
Antwort geprüft von – Jay B. (FixError Admin)