- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试复制 uiimage 并更改元数据,而不重新编码图像,以免导致 jpg 伪影(我知道下面的代码重新编码,但这只是为了可以运行它进行测试)。 CGImageDestinationCopyImageSource 应该复制图像的源而不重新编码它,但是当我使用该函数时,它在 CGImageDestinationFinalize 处失败。我正在尝试遵循此技术说明 https://developer.apple.com/library/content/qa/qa1895/_index.html知道为什么 CGImageDestinationFinalize 会因下面的代码而失败吗?
-(NSData *)copyImageAndChangeMetaData:(UIImage *)image {
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
NSLog(@" source: 0x%x", source);
if (source == NULL) {
NSLog(@" source is NULL");
}
CFStringRef UTI = CGImageSourceGetType(source);
NSLog(@" UTI: %@", (__bridge NSString *)UTI);
if (UTI == NULL) {
NSLog(@" UTI is NULL");
}
NSMutableData *dest_data = [NSMutableData data];
CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)dest_data, UTI, 1, NULL);
if (!destination)
{
NSLog(@"Image Data Error: Could not create image destination");
}
CFMutableDictionaryRef metadata = CFDictionaryCreateMutable(kCFAllocatorDefault, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
int orient = 8;
CFNumberRef orientRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &orient);
CFDictionarySetValue(metadata, kCGImageDestinationOrientation, orientRef);
CFStringRef dateStringRef = CFStringCreateWithCString(kCFAllocatorDefault, "2017-06-06T17:31:46Z", kCFStringEncodingASCII);
CFDictionarySetValue(metadata, kCGImageDestinationDateTime, dateStringRef);
CFErrorRef errorRef = nil;
if (!CGImageDestinationCopyImageSource(destination, source, metadata, &errorRef)) {
CFStringRef error_description = CFErrorCopyDescription(errorRef);
NSString *errorDescription = (__bridge NSString *)error_description;
NSLog(@"Image Data Error: Error copying image data: %@", errorDescription);
CFRelease(error_description);
}
BOOL success = NO;
success = CGImageDestinationFinalize(destination);
if (!success)
{
NSLog(@"Image Data Error: Could not finalize image");
}
if (source != NULL) {
CFRelease(source);
}
if (destination != NULL) {
CFRelease(destination);
}
return dest_data;
}
最佳答案
根据 Apple 的 HeaderDoc 文档 CGImageDestinationCopyImageSource()
文件中的函数<ImageIO/CGImageDestination.h>
:
CGImageDestinationFinalize() should not be called afterward - the result is saved to the destination when this function returns.
关于ios - 使用 CGImageDestinationCopyImageSource 时 CGImageDestinationFinalize 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44400559/
我的应用允许用户使用照片框架编辑照片。我看到一些崩溃报告,似乎是在生成输出图像时发生崩溃,但我不确定问题出在哪里。此崩溃发生在多个硬件设备和多个版本的 iOS 9 上,包括最新的 9.1。我的应用最后
在创建具有大量帧的 GIF 时,我正在尝试解决性能问题。例如,某些 GIF 可能包含 > 1200 帧。使用我当前的代码,我的内存不足。我正在想办法解决这个问题;这可以分批完成吗?我的第一个想法是是否
我正在尝试复制 uiimage 并更改元数据,而不重新编码图像,以免导致 jpg 伪影(我知道下面的代码重新编码,但这只是为了可以运行它进行测试)。 CGImageDestinationCopyIma
我正在尝试为更大的图像创建图 block ,似乎从 IOS 10 开始,以下代码不再有效并因 EXC_BAD_ACCESS 而崩溃。 这只发生在 IOS 10 设备上,IOS 9 工作正常。 任何大于
使用这个 block ,我的应用程序每次尝试都会崩溃 CGImageDestinationFinalize(gifDest!) 阻止 func createGIF(with images: [CGIm
编辑答案: - (UIImage*) maskImage:(UIImageView *)maskImage withMask:(UIImageView *)cropImage { UIImag
我是一名优秀的程序员,十分优秀!