줌 기능을 2 배로 작게 썼습니다. 하지만 그것을 실행하는 동안 EXC_BAD_ACCESS 오류를 제공하고 있습니다. 아래 코드는iOS가 내 기능에 EXC_BAD_ACCESS를 부여했습니다.
- (CGImageRef)CGImageScale2x:(CGImageRef)imgRef
{
CGFloat width = CGImageGetWidth(imgRef);
CGFloat height = CGImageGetHeight(imgRef);
CGRect imgRect = CGRectMake(0, 0, width, height);
CGAffineTransform transform = CGAffineTransformMakeScale(2.0, 2.0);
CGRect scaledRect = CGRectApplyAffineTransform(imgRect, transform);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bmContext = CGBitmapContextCreate(NULL,
scaledRect.size.width,
scaledRect.size.height,
8,
0,
colorSpace,
kCGImageAlphaPremultipliedFirst);
CGContextSetAllowsAntialiasing(bmContext, FALSE);
CGContextSetInterpolationQuality(bmContext, kCGInterpolationNone);
CGColorSpaceRelease(colorSpace);
CGContextScaleCTM(bmContext, 2.0, 2.0);
CGContextDrawImage(bmContext, CGRectMake(0, 0,
scaledRect.size.width,
scaledRect.size.height),
imgRef);
CGImageRef scaledImage = CGBitmapContextCreateImage(bmContext);
CFRelease(bmContext);
[(id)scaledImage autorelease];
return scaledImage;
}
입니다. iOS를 처음 사용합니다. 도와주세요.
감사
글쎄, 한 가지 말하자면, "CaveitmapContextCreate"의 다섯 번째 인수로 0을 전달하면 "내 컨텍스트의 행이 0 바이트가됩니다."하고 다른 경우에는 CG 객체를 자동 회수 할 수 없습니다. 시도하지 마십시오. – borrrden
@borrrden 안녕하세요, 이미 확대/축소 할 이미지를 회전하려면 이미 작동하는 함수를 수정하고 있습니다. 이 함수에서 CGBitmapContextCreate의 다섯 번째 인수는 0이고 또한 CGImageRef 객체에 대해 autorelease가 호출됩니다. 그 기능은 잘 작동합니다. 그래서 그것이 버그인지 의심 스럽습니다. 의견을 말하십시오 – Shamy
Autorelease는 objective-c 함수입니다. 그러나 CGImageRef는 C 객체이므로 autorelease가 적용되지 않습니다. (결국 autorelease 풀에서 호출되는 릴리스도 마찬가지입니다.) 어떤 라인이 충돌을 일으키는 지 아는 것도 도움이 될 것입니다. 0에 이르기까지, 아마 애플은 계산할 수 있다는 것을 알고 있기 때문에 백엔드에서 사용을 중단했을 것이다.하지만 거기에 제로가있는 것은 이상하다. – borrrden