2012-05-24 13 views
7

próbuję upraw obrazu zgodnie z moim pragnieniem .... dla mojego typu cinemagram aplikacji ..... i używać go w mojej aplikacjiiPhone: -simplest sposób przyciąć obraz pożądanego kształtu i wielkości

próbowałem wiele opcji, ale żaden z Tham jest ... przydatne dla mnie czytam odpowiedzi na stosie nad przepływem ale bezużyteczne

plzz mi pomóc

image = [UIImage imageNamed:@"images2.jpg"]; 
imageView = [[UIImageView alloc] initWithImage:image]; 

CGSize size = [image size]; 

[imageView setFrame:CGRectMake(0, 0, size.width, size.height)]; 
[[self view] addSubview:imageView]; 
[imageView release];  

dzięki

+1

chcesz zmienić rozmiar obrazu o pożądanym kształcie i rozmiarze –

+0

zobacz [odpowiedź DarkDust tutaj] (http://stackoverflow.com/a/5701294/653513). Powinien być przydatny w połączeniu z poniższym kodem Codemaster Gabriel. –

Odpowiedz

11

Oto dokładny kod, aby zmienić rozmiar obrazu do żądanej wielkości

CGSize itemSize = CGSizeMake(320,480); // give any size you want to give 

    UIGraphicsBeginImageContext(itemSize); 

    CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height); 

    [myimage drawInRect:imageRect]; 


    myimage = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

Teraz mój obraz jest od żądanej wielkości

3

Proszę znaleźć poniższy kod, aby przyciąć obraz.

// Create the image from a png file 
UIImage *image = [UIImage imageNamed:@"prgBinary.jpg"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

// Get size of current image 
CGSize size = [image size]; 

// Frame location in view to show original image 
[imageView setFrame:CGRectMake(0, 0, size.width, size.height)]; 
[[self view] addSubview:imageView]; 
[imageView release];  

// Create rectangle that represents a cropped image 
// from the middle of the existing image 
CGRect rect = CGRectMake(size.width/4, size.height/4 , 
    (size.width/2), (size.height/2)); 

// Create bitmap image from original image data, 
// using rectangle to specify desired crop area 
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect); 
UIImage *img = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef); 

// Create and show the new image from bitmap data 
imageView = [[UIImageView alloc] initWithImage:img]; 
[imageView setFrame:CGRectMake(0, 200, (size.width/2), (size.height/2))]; 
[[self view] addSubview:imageView]; 
[imageView release]; 

Zaproszony od How to Crop an Image

2

myślę, że to jest najprostszy sposób:

CGRect rect = CGRectMake(0.0, 0.0, 320.0, 430.0); 
CGImageRef tempImage = CGImageCreateWithImageInRect([originalImage CGImage], rect); 
UIImage *newImage = [UIImage imageWithCGImage:tempImage]; 
CGImageRelease(tempImage); 

Ale nie zapomnij wyczyścić imageOrientation przed kadrowaniem, inaczej dostaniesz obrócony obraz po przycięciu:

-(UIImage *)normalizeImage:(UIImage *)raw { 
    if (raw.imageOrientation == UIImageOrientationUp) return raw; 
    UIGraphicsBeginImageContextWithOptions(raw.size, NO, raw.scale); 
    [raw drawInRect:(CGRect){0, 0, raw.size}]; 
    UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return normalizedImage; 
} 
0

Tutaj jest klasa używając odpowiedź DINESH, aby uzyskać kwadratową miniaturkę obrazu

class func returnSquareCroppedImage(theImage:UIImage)->UIImage{ 

    var mySize:CGFloat = 100.0 
    var imageRect:CGRect 

    if theImage.size.width > theImage.size.height { 

     mySize = theImage.size.height 
     let xAdjust = 0-((theImage.size.width - theImage.size.height)/2) 
     imageRect = CGRectMake(xAdjust, 0, theImage.size.width, theImage.size.height) 
    }else{ 

     mySize = theImage.size.width 
     let yAdjust = 0-((theImage.size.height - theImage.size.width)/2) 
     imageRect = CGRectMake(0, yAdjust, theImage.size.width, theImage.size.height) 
    } 

    UIGraphicsBeginImageContext(CGSizeMake(mySize, mySize)) 

    theImage.drawInRect(imageRect) 

    let returnImage = UIGraphicsGetImageFromCurrentImageContext() 

    return returnImage 
} 
Powiązane problemy