如何使用 sips 更改 TIFF 图像的压缩方式?

发布于 2024-08-03 23:54:38 字数 393 浏览 1 评论 0原文

我是 Mac 用户,

如何使用 小口

下面的 LZW 效果很好。

sips -s formatOptions lzw /DefaultGroup.tif

但这失败了:

sips -s formatOptions packbits /DefaultGroup.tif

知道为什么吗?

I am a Mac guy,

How to get the PackBits compression using sips?

Below one for LZW works fine.

sips -s formatOptions lzw /DefaultGroup.tif

But this fails:

sips -s formatOptions packbits /DefaultGroup.tif

Any idea why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

往昔成烟 2024-08-10 23:54:38

换句话说

sips -s formatOptions packbits /DefaultGroup.tif

sips -s formatOptions pacbits /DefaultGroup.tif

使用“pacbits”而不是“packbits”。

有点令人惊讶,但确实如此。

Instead of

sips -s formatOptions packbits /DefaultGroup.tif

try

sips -s formatOptions pacbits /DefaultGroup.tif

In other words, use 'pacbits' instead of 'packbits'.

Kind of surprising, but there it is.

乄_柒ぐ汐 2024-08-10 23:54:38

下面的代码有效。
但我仍然找不到我的查询的实际答案。

 int compression = NSTIFFCompressionPackBits;

CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef)dataToWrite, NULL);

CGImageRef imageRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

CFMutableDictionaryRef saveMetaAndOpts = CFDictionaryCreateMutable(nil,0,&kCFTypeDictionaryKeyCallBacks,  &kCFTypeDictionaryValueCallBacks);

CFMutableDictionaryRef tiffProfsMut = CFDictionaryCreateMutable(nil, 0,
&kCFTypeDictionaryKeyCallBacks,  &kCFTypeDictionaryValueCallBacks);

CFDictionarySetValue(tiffProfsMut, kCGImagePropertyTIFFCompression, CFNumberCreate(NULL, kCFNumberIntType, &compression));  
CFDictionarySetValue(saveMetaAndOpts, kCGImagePropertyTIFFDictionary, tiffProfsMut);

NSURL *outURL = [[NSURL alloc] initFileURLWithPath:filename];
CGImageDestinationRef dr = CGImageDestinationCreateWithURL ((CFURLRef)outURL, (CFStringRef)@"public.tiff" , 1, NULL);
CGImageDestinationAddImage(dr, imageRef, saveMetaAndOpts);
CGImageDestinationFinalize(dr);

CFRelease(dr);
[outURL release];
CFRelease(tiffProfsMut);
CFRelease(saveMetaAndOpts);
CFRelease(imageRef);

CFRelease(source);

The code below works.
But still I could not find the actual answer to my query.

 int compression = NSTIFFCompressionPackBits;

CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef)dataToWrite, NULL);

CGImageRef imageRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

CFMutableDictionaryRef saveMetaAndOpts = CFDictionaryCreateMutable(nil,0,&kCFTypeDictionaryKeyCallBacks,  &kCFTypeDictionaryValueCallBacks);

CFMutableDictionaryRef tiffProfsMut = CFDictionaryCreateMutable(nil, 0,
&kCFTypeDictionaryKeyCallBacks,  &kCFTypeDictionaryValueCallBacks);

CFDictionarySetValue(tiffProfsMut, kCGImagePropertyTIFFCompression, CFNumberCreate(NULL, kCFNumberIntType, &compression));  
CFDictionarySetValue(saveMetaAndOpts, kCGImagePropertyTIFFDictionary, tiffProfsMut);

NSURL *outURL = [[NSURL alloc] initFileURLWithPath:filename];
CGImageDestinationRef dr = CGImageDestinationCreateWithURL ((CFURLRef)outURL, (CFStringRef)@"public.tiff" , 1, NULL);
CGImageDestinationAddImage(dr, imageRef, saveMetaAndOpts);
CGImageDestinationFinalize(dr);

CFRelease(dr);
[outURL release];
CFRelease(tiffProfsMut);
CFRelease(saveMetaAndOpts);
CFRelease(imageRef);

CFRelease(source);
聆听风音 2024-08-10 23:54:38

循环qoob是对的。

sips 的手册页是错误的。使用 sip 时必须使用“pacbits”而不是“packbits”。

换句话说,这会起作用。在运行 High Sierra 的 Mac 上确实如此:

EG

sips -s format tiff -s formatOptions pacbits '/Users/rob/Downloads/image20.jpg' --out '/Users/rob/Downloads/image20.tiff

执行此操作后,我可以在预览中打开 tiff 图像。单击“工具”,然后单击下拉菜单中的“显示检查器”。您将看到 TIFF 图像是用 Packbits 压缩的。 (预览显示所使用的压缩的正确名称)。

loopqoob is right.

The man page for sips is wrong. You must use "pacbits" NOT "packbits" when using sips.

In other words, this will work. It does on my Mac running High Sierra:

E.G.

sips -s format tiff -s formatOptions pacbits '/Users/rob/Downloads/image20.jpg' --out '/Users/rob/Downloads/image20.tiff

After I do that, I can open up the tiff image in Preview. Click "Tools" and then "Show Inspector" on the drop down menu. You will see that the TIFF image is compressed with Packbits. (Preview shows the correct name of the compression used).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文