2016-09-26 69 views
0

我想從IOS UIImage得到面膜(X,Y)的位置和(寬,高)的尺寸,我已經使用UIImageenter image description here 我只想面具從這個UIImage獲得形狀的框架,我用代碼像如何找到的UIView在IOS面膜的位置和大小

thumbImage.layer.mask?.position 
thumbImage.layer.mask?.bounds 

,但我沒有得到應有的地位和框架。

有必要使用這種類型的圖像掩蓋其他圖像沒有任何其他選項。

請幫助我在UIView中獲得正確的框架和麪罩位置。

回答

-1

您可以創建變量來獲取像這樣的代碼的大小和位置:CGPoint Position; Position = thumbImage.frame.origin; CGSize Size; Size = thumbImage.frame.size;

+0

我想從掩碼動態幀這僅僅是例子,我有很多不同的掩膜圖像 –

0

從圖像中讀取像素,從圖像中獲取CGRect與設備寬度和高度比較。

- (CGRect)getRectFromImage:(UIImage*)image 
{ 

    // First get the image into your data buffer 
    CGImageRef imageRef = [image CGImage]; 
    NSUInteger width = CGImageGetWidth(imageRef); 
    NSUInteger height = CGImageGetHeight(imageRef); 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    unsigned char *rawData = malloc(height * width * 4); 
    NSUInteger bytesPerPixel = 4; 
    NSUInteger bytesPerRow = bytesPerPixel * width; 
    NSUInteger bitsPerComponent = 8; 
    CGContextRef context = CGBitmapContextCreate(rawData, width, height, 
               bitsPerComponent, bytesPerRow, colorSpace, 
               kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); 
    CGColorSpaceRelease(colorSpace); 

    CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef); 
    CGContextRelease(context); 


    int x = 0; 
    int y = 0; 
    int xPos = 0; 
    int yPos = 0; 

    int xMax = 0; 
    int yMax = 0; 


    for (x = 0; x < width; x++) { 
     for (y = 0; y < height; y++) { 
      unsigned char alphaByte = rawData[(y*bytesPerRow)+(x*bytesPerPixel)+3]; 
      if (alphaByte > 0) { 

      if (xPos == 0) { 
       xPos = x; 
      } 

      if (yPos == 0) { 
       yPos = y; 
      } 
       if (x < xPos) { 
        xPos = x; 
       } 

       if (y < yPos) { 
        yPos = y; 
       } 

       if (x > xMax) { 
        xMax = x; 
       } 

       if (y > yMax) { 
        yMax = y; 
       } 
      } 
     } 
    } 

    NSLog(@"(%i,%i,%i,%i)", xPos, yPos,xMax-xPos,yMax-yPos); 


    free(rawData); 

    return CGRectMake(xPos, yPos, xMax-xPos, yMax-yPos); 
} 
相關問題