gpt4 book ai didi

objective-c - 如何获取 QLPreviewView 内容并写入图像

转载 作者:行者123 更新时间:2023-12-03 17:22:36 25 4
gpt4 key购买 nike

我只是写了一个小演示。它的所有功能都是使用 QLPreviewView 来快速查看页面文件。 当应用程序运行时,您可以滚动查看Pages文件内容,当您单击“保存到PNG”按钮时,应用程序会将当前显示的内容保存到PNG图像文件中。您可以在 save 方法中获取实现。我刚刚尝试了该方法的两种实现,但都不起作用。 我刚刚得到一个填充了窗口背景颜色的空白图像。这里有一些建议吗?谢谢。

代码和应用程​​序屏幕截图可以在这里找到 http://dr.ibuick.com/updU

#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
#import <QuickLook/QuickLook.h>
#import "IBAppDelegate.h"

@interface IBAppDelegate (QLPreviewItem) <QLPreviewItem>

@end

@implementation IBAppDelegate (QLPreviewItem)

- (NSURL *)previewItemURL
{
return self.resolvedFileURL;
}

- (NSString *)previewItemTitle
{
return [self.originalURL absoluteString];
}

@end

@implementation IBAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
_resolvedFileURL = [NSURL fileURLWithPath:@"/Users/buick/Desktop/1.pages"];
_originalURL = [NSURL fileURLWithPath:@"/Users/buick/Desktop/1.pages"];
_previewView = [[QLPreviewView alloc] initWithFrame:NSMakeRect(0, 50, 480, 360)
style:QLPreviewViewStyleNormal];
[_previewView setPreviewItem:self];
[self.window.contentView addSubview:_previewView];
}

- (IBAction)save:(id)sender {

// Method 1

[_previewView lockFocus];
NSBitmapImageRep* rep = [_previewView
bitmapImageRepForCachingDisplayInRect:_previewView.bounds];
[_previewView cacheDisplayInRect:_previewView.bounds toBitmapImageRep:rep];
[_previewView unlockFocus];
[[rep representationUsingType:NSPNGFileType properties:nil]
writeToFile:@"/Users/buick/Desktop/1.png" atomically:YES];

// Method 2
[_previewView lockFocus];

NSBitmapImageRep *bits;
bits = [[NSBitmapImageRep alloc]
initWithFocusedViewRect:[_previewView visibleRect]];
[_previewView unlockFocus];
NSData *imageData;
NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber
numberWithFloat:0.9] forKey:NSImageCompressionFactor];
imageData = [bits representationUsingType:NSJPEGFileType
properties:imageProps];
[imageData writeToFile:@"/Users/buick/Desktop/1.png" atomically:YES];
}
@end

最佳答案

好的,我想我明白了。尝试在初始化时将 QLPreviewView 类型设置为 QLPreviewViewStyleCompact。

pv = [[QLPreviewView alloc] initWithFrame:pv.bounds
style:QLPreviewViewStyleCompact];

然后使用这个类别

NSImage+QuickLook from Matt Gemmel...

github

NSImage *image = [NSImage imageWithPreviewOfFileAtPath:[[self.files objectAtIndex:i] path] ofSize:NSMakeSize(1200, 1920) asIcon:NO];

关于objective-c - 如何获取 QLPreviewView 内容并写入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17749277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com