是否可以在uipasteboard中重新调整图像大小xcode 7.2 Objective C?

时间:2016-01-13 09:35:16

标签: xcode uipasteboard

我目前正在Xcode 7.2中使用这个代码,它接收图像并将其粘贴在imessages等中。但它太大(尺寸)。是否可以缩小此图像?

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    NSData *imgData = UIImagePNGRepresentation(image);
    [pasteboard setData:imgData forPasteboardType:[UIPasteboardTypeListImage objectAtIndex:0]]; 

1 个答案:

答案 0 :(得分:0)

不是在粘贴板中。但是,如果你把它粘贴到某个地方时你担心它的大小是错误的,那就不要害怕了,Apple对我们很友善,并为我们构建了大量的“调整大小”的演示文稿。

如果你真的需要调整图像大小,你需要做的是:

1)懒惰并使用你可以恢复的代码...即我在这里发现了这个我相信:

- (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:NSCompositeCopy fraction:1.0];
        [smallImage unlockFocus];
        return smallImage;
    }
    return nil;
}

然后在你给我们的代码中:

    *pasteboard = [UIPasteboard generalPasteboard];
    NSImage *myShinyResizedImage = [self imageResize: oldImage newSize: CGSizeMake(100.0, 100.0)];
    NSData *imgData = UIImagePNGRepresentation(myShinyResizedImage);
    [pasteboard setData:imgData forPasteboardType:[UIPasteboardTypeListImage objectAtIndex:0]];

如果要将其粘贴到其他地方,它会被重新调整大小。