나는 다음과 같은 오류와 충돌에 직면하고있다 :충돌 CGDataProviderCreateWithCopyOfData : vm_copy 실패 : 상태 1
"CGDataProviderCreateWithCopyOfData: vm_copy failed: status 1."
는 여러 개의 질문이 당신이 도움이 될 수 있습니다.
상태 1은 vm_copy에서 무엇을 의미합니까?
이 충돌은 데이터 복사본의 내부 for 루프에 중단 점을 설정할 때만 발생합니다. 그런 다음 중단 점을 다시 시작하고 제거하십시오. 중단 점이 없으면 함수가 실행되지만 빈 이미지가 나타납니다. 중단 점을 설정하지 않아도 이러한 충돌이 발생하고 응용 프로그램이 실행을 중지하는지 어떻게 확인할 수 있습니까?
이 오류는 CGBitmapContextCreateImage를 실행할 때 발생합니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?
는
-(UIImage *) convertBitmapRGBA8ToUIImage:(UInt8**)img
:(int) width
:(int) height
{
CGImageRef inImage = m_inFace.img.CGImage;
UInt8*piData = calloc(width*height*4,sizeof(UInt8));
int iStep,jStep;
for (int i = 0; i < height; i++)
{
iStep = i*width*4;
for (int j = 0; j < width; j++)
{
jStep = j*4;
piData[iStep+jStep] =img[i][j];
piData[iStep+jStep+1] =img[i][j];
piData[iStep+jStep+2] = img[i][j];
}
}
CGContextRef ctx = CGBitmapContextCreate(piData,
CGImageGetWidth(inImage),
CGImageGetHeight(inImage),
CGImageGetBitsPerComponent(inImage),
CGImageGetBytesPerRow(inImage),
CGImageGetColorSpace(inImage),
CGImageGetBitmapInfo(inImage)
);
CGImageRef imageRef = CGBitmapContextCreateImage(ctx);
UIImage *finalImage = [UIImage imageWithCGImage:imageRef];
CGContextRelease(ctx);
CGImageRelease(imageRef);
free(piData);
return finalImage;
}
예 메모리 정렬 문제였습니다. 이미지 방향을 고려하지 않았습니다. CGimage의 너비와 높이가 서로 다릅니다. 이로 인해 지적한대로 메모리 정렬이 잘못되었습니다. 답장을 보내 주셔서 감사합니다. – Jailbroken