iPhone: как обрезать изображение в ios5 - PullRequest
0 голосов
/ 06 марта 2012

В моем приложении требуется получить изображение из библиотеки фотографий или камеры, и если пользователь хочет обрезать изображение, он должен это сделать, но я не знаю, как обрезать изображение, полученное с камеры илибиблиотека фотографий.

если у вас есть идеи, поделитесь ею ...

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

Я сделал то же самое в Mac, возможно, вы могли бы попробовать это,

+(NSImage *)BreakImageForFirstImage:(NSImage *)pSrcImage Size:(NSSize)imageSize{

    /*
     Create a new NSImage with the size of the subrect, lock focus on it, draw the sub rect of the source image into
     the new, locked image using -drawInRect:fromRect:operation:fraction: ("fromRect:" should be the subrect of the 
     source; the first rect argument will be a rect of the same size as the subrect, with a 0,0 origin), then unlock 
     focus from the new image. Done. Because of all that's involved in this, it might still be more efficient just to 
     load individual images  

     */


    NSSize srcSize = [pSrcImage size];

    int subImageHeight = imageSize.height;
    int subImageWidth = imageSize.width;

    NSRect subImageRect = NSMakeRect(0,0,imageSize.width,imageSize.height);

    NSRect tempRect = NSMakeRect(0,0,imageSize.width,imageSize.height);

    //NSMutableArray *pImageArray = [[NSMutableArray alloc]initWithCapacity:noOfImages];

    NSImage *pTempImage = nil;
    int rowId =0;
    int colId = 0;
    //for(;rowId<noOfRow;rowId++)
    {
        pTempImage = [[NSImage alloc]initWithSize:imageSize];
        tempRect = NSMakeRect(rowId*subImageWidth,colId*subImageHeight,subImageWidth,subImageHeight);
        [pTempImage lockFocus];
        [pSrcImage drawInRect:subImageRect fromRect:tempRect operation:NSCompositeSourceOver fraction:1.0];
        [pTempImage unlockFocus];
        //[pImageArray insertObject:pTempImage atIndex:rowId];

    }

    return pTempImage;
    /* */
}

Возможно, в некоторых местах вам может понадобиться преобразовать NS в UI, чтобы он работал для iOS

0 голосов
/ 06 марта 2012

Вы можете обрезать свое изображение, используя UIGraphicsGetImageFromCurrentImageContext

Идея состоит в том, чтобы нарисовать ваше изображение в обрезанном графическом контексте, используя CoreGraphics, а затем экспортировать текущий контекст в изображение.

UIGraphicsGetImageFromCurrentImageContext Возвращает изображение на основе содержимое текущего растрового графического контекста.

Return Объект изображения, содержащий содержимое текущего контекст растровой графики.

Попробуйте что-нибудь подобное:

- (UIImage*)imageCrop:(UIImage *)imageToCrop toRect:(CGRect)rect
{
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef currentContext = UIGraphicsGetCurrentContext();

    CGRect clippedRect = CGRectMake(0, 0, rect.size.width, rect.size.height);
    CGContextClipToRect( currentContext, clippedRect);

    CGRect drawRect = CGRectMake(rect.origin.x, rect.origin.y, imageToCrop.size.width, imageToCrop.size.height);
    CGContextDrawImage(currentContext, drawRect, imageToCrop.CGImage);
    UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return cropped;
}

надеюсь, это поможет, Винсент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...