2014-05-19 5 views
0

배열이 1 &입니다. 1은 검은 색이고 0은 흰색입니다. 드로잉/렌더링, 픽셀 색상 반전, iOS에서 드로잉의 크기를 조절하는 가장 빠른 방법을 원합니다. 이 코드를 작성한하지만 느린 : 누군가가 나에게 샘플 코드와 더 나은 & 빠른 방법을 제공하는 경우 정말 감사하겠습니다 iOS에서 픽셀 배열 그리기

for (int yCoordinate = 0; yCoordinate < height; yCoordinate++) 
{ 
for (int xCoordinate = 0; xCoordinate < width; xCoordinate++) 
{ 
int byteIndex = (bytesPerRow * yCoordinate) + xCoordinate * bytesPerPixel; 
     int pixel = jbig2_image_get_pixel(imgData, xCoordinate, yCoordinate); 
     float pixelRGB[]={0,0,0,0}; 

     if(pixel==0) 
     { 
      pixelRGB[0] = backRGB[0]; //255.f; 
      pixelRGB[1] = backRGB[1]; 
      pixelRGB[2] = backRGB[2]; 
      pixelRGB[3] = backRGB[3]; 

     } 

     else 
     { 
      pixelRGB[0] = textRGB[0]; //0.f 
      pixelRGB[1] = textRGB[1]; 
      pixelRGB[2] = textRGB[2]; 
      pixelRGB[3] = textRGB[3]; 

     } 


//Assigning new color components 

rawData[byteIndex] = (unsigned char) pixelRGB[0]; 
rawData[byteIndex + 1] = (unsigned char) pixelRGB[1]; 
rawData[byteIndex + 2] = (unsigned char) pixelRGB[2]; 
     rawData[byteIndex + 3] = (unsigned char) pixelRGB[3]; 


} 
} 

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
CGContextRef bitmapContext = CGBitmapContextCreate(rawData, 
             width, 
             height, 
             8, 
             bytesPerRow, 
             colorSpace, 
             (CGBitmapInfo)kCGImageAlphaNoneSkipLast); 


CGImageRef cgImage = CGBitmapContextCreateImage(bitmapContext); 
newUIImage = [UIImage imageWithCGImage:cgImage]; 

등 CGLayer, UIKit 같은 더 좋은 방법이있다

답변

0

CGBitmapCreate()을 사용하고 픽셀 이미지 당 1 비트를 만듭니다. 바이트 배열의 각 바이트가 비트 맵의 ​​단일 비트가되는 비트 맵으로 바이트 배열을 변환해야합니다. 그러면 CGImage 픽셀 당 1 비트에서 직접 UIImage을 직접 만들 수 있습니다. 이를 반전하려면 다른 블렌드 모드 (차이 모드 또는 아마도 XOR?)를 사용하여 그릴 수 있습니다.