gpt4 book ai didi

macos - 有没有办法将 ImageKit 的 IKSaveOptions 初始化为默认为 LZW 压缩的 TIFF?

转载 作者:行者123 更新时间:2023-12-03 16:20:52 25 4
gpt4 key购买 nike

我正在使用 Mac OS X 10.6 SDK ImageKit 的 IKSaveOptions 将文件格式附件添加到 NSSavePanel,方法是:

- (id)initWithImageProperties:(NSDictionary *)imageProperties imageUTType:(NSString *)imageUTType;

- (void)addSaveOptionsAccessoryViewToSavePanel:(NSSavePanel *)savePanel;

我尝试创建一个 NSDictionary 来指定 Compression = 5,但当 NSSavePanel 首次出现时,我似乎无法让 IKSaveOptions 显示 Format:TIFF, Compression:LZW。我还尝试保存返回的 imageProperties 字典和 userSelection 字典,然后尝试下次将其返回,但 NSSavePanel 始终默认为 Format:TIFF 和 Compression:None。

有人知道如何自定义附件 View 中显示的默认格式/压缩吗?

我想将保存选项默认为 TIFF/LZW,并且希望下次恢复用户上次选择的文件格式。我可以使用 imageUTType(例如 kUTTypeJPEG、kUTTypePNG、kUTTypeTIFF 等)控制文件格式,但我仍然无法设置 TIFF 或 JPEG 格式的初始压缩选项。

谢谢

-丽

最佳答案

没有公共(public) API 可以控制这一点。但是,您可以通过 NSSavePanel 的附件 View 对其进行修改。

示例:

self.saveOptions = [[IKSaveOptions alloc] initWithImageProperties:nil
imageUTType:(NSString *)kUTTypeTIFF];
[self.saveOptions addSaveOptionsAccessoryViewToSavePanel:savePanel];


// find compression options popup button in accessory view, select desired compression
// correct title depends on localization -> be carefull with LZW and tag
NSView *accessoryView = [savePanel accessoryView];
NSArray *accessorySubViews = [accessoryView subviews];

for (id view in accessorySubViews) {

if([view isKindOfClass:[NSPopUpButton class]]){
NSPopUpButton *popupButton = (NSPopUpButton *)view;
NSArray *menuItems =[[popupButton menu] itemArray];
for (NSMenuItem *menutItem in menuItems) {
if([[menutItem title] isEqualToString:@"LZW"]) {
//make sure you reverse engineer tags for
[popupButton selectItemWithTitle:@"LZW"];
id target = [menutItem target];
SEL action = [menutItem action];
[target performSelector:action withObject:popupButton];
}
}
}
}

关于macos - 有没有办法将 ImageKit 的 IKSaveOptions 初始化为默认为 LZW 压缩的 TIFF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722979/

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