Объединить 2 изображения, где можно перемещаться - PullRequest
0 голосов
/ 05 октября 2010

Я хочу объединить два изображения: одно - открытка с прозрачной частью в форме сердца, а другое - изображение пары. Теперь я хочу, чтобы изображение пары было подвижным, чтобы я мог перемещать их и изменять их размеры, чтобы установить в той части сердца, а затем я хочу сохранить эту смесь изображений как одно изображение и отправить его в виде вложения в почту ... Не могли бы вы предоставить мне ссылку на любой такой пример или решение.

Любая помощь будет очень признательна.

Заранее спасибо ...

1 Ответ

1 голос
/ 28 октября 2010

Вот как я сделал маскировку, и это сработало для меня.

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage1
{

    float width,height;
        width=288.0;
        height=274.0;

    CGContextRef mainViewContentContext; CGColorSpaceRef colorSpace;
    UIImage *orgImage=image; 

    CGImageRef img = [orgImage CGImage];

    colorSpace = CGColorSpaceCreateDeviceRGB();

    mainViewContentContext = CGBitmapContextCreate (NULL, width, height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast); 
    CGColorSpaceRelease(colorSpace);

    if (mainViewContentContext==NULL)
        return NULL;

    CGRect subImageRect; 
    CGImageRef tileImage;
    float xCord=0;
    float yCord=0;
    subImageRect = CGRectMake(xCord,yCord,width,height);
    tileImage = CGImageCreateWithImageInRect(img,subImageRect);
    //UIImageWriteToSavedPhotosAlbum([UIImage imageWithCGImage:tileImage],nil,nil,nil);
    CGImageRef maskImage = maskImage1.CGImage;
    CGContextClipToMask(mainViewContentContext, CGRectMake(0, 0, width, height), maskImage);
    CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, width, height), tileImage);
    //UIImageWriteToSavedPhotosAlbum([UIImage imageWithCGImage: maskImage],nil,nil,nil);
    CGImageRef mainViewContentBitmapContext = CGBitmapContextCreateImage(mainViewContentContext);
    CGContextRelease(mainViewContentContext); 
    UIImage *theImage = [UIImage imageWithCGImage:mainViewContentBitmapContext];
    //UIImageWriteToSavedPhotosAlbum(theImage,nil,nil,nil);
    CGImageRelease(mainViewContentBitmapContext);
    return theImage;
}

И ЭТО КАК Я СДЕЛАЛ ИЗОБРАЖЕНИЕ

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

    if([timer isValid])
        [timer invalidate];

    NSSet *allTouches = [event allTouches];

    switch ([allTouches count])
    {
        case 1: {
            //The image is being panned (moved left or right)
            UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
            CGPoint centerPoint = [touch locationInView:[self view]];

            [imgView setCenter:centerPoint];

            NSLog(@"Center.x=%f Center.y=%f",centerPoint.x,centerPoint.y);


        } break;
        case 2: {
            //The image is being zoomed in or out.

            UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
            UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];

            //Calculate the distance between the two fingers.
            CGFloat finalDistance = [self distanceBetweenTwoPoints:[touch1 locationInView:[self view]] toPoint:[touch2 locationInView:[self view]]];
            NSLog(@"Initial=%f Final=%f",initialDistance,finalDistance);
            //Check if zoom in or zoom out.
            //Check if zoom in or zoom out.




            int width;
            int height;

            if(initialDistance < finalDistance) {
                NSLog(@"Zoom Out");

                zx=imgView.frame.origin.x-2.5;
                zy=imgView.frame.origin.y-2.5;
                width=imgView.frame.size.width+5;
                height=imgView.frame.size.height+5;

            }
            else
            {
                NSLog(@"Zoom In");



                zx=imgView.frame.origin.x+2.5;
                zy=imgView.frame.origin.y+2.5;
                               width=imgView.frame.size.width-5;
                               height=imgView.frame.size.height-5;

            }

            imgView.frame = CGRectMake(zx,zy,width,height);
            initialDistance = finalDistance;

        } break;
    }

}

СЧАСТЛИВОЕ КОДИРОВАНИЕ ...

...