2010-03-05 2 views
0

UIScrollView에서 UIImageview를 사용하여 사용자가 이미지를 집어서 확대/축소 할 수있게했습니다. 이제 사용자가 수정 한 이미지를 가져오고 싶습니다 (작거나 확대). 어떻게해야합니까?UIImageView에서 확대/축소 된 이미지 가져 오기

감사합니다.

지금은 새로운 것을 시도하고 있습니다. 그 중간의 이미지에서 미리보기 이미지를 얻을 수 있습니까? 고정 된 크기로 (0,0)에서 축소판을 가져올 수 있습니다. 내가 (10, 20) 또는 (30, 30)이라고 말할 수 있습니까? 다시 한번 감사드립니다. CGImageCreateWithImageInRect를 사용하여 x 및 y에 대해 이러한 값을 갖는 rect를 시도했습니다. 하지만 0

+0

는 "이미지를 얻을"무엇을 의미합니까? 그 크기에 따라 또 다른 UIImage를 만들고 싶다는 뜻입니까? 또는 이미지 파일을 원하십니까? –

+0

크기가 조정 된 이미지로 UIImage를 만들고 싶습니다. – lostInTransit

+0

PPS - 세로 이미지 용으로 작동합니다. 풍경 이미지에만 문제가 있습니다. – lostInTransit

답변

1

UIScrollView 내에서 확대/축소하면 UIImageView 프레임 만 변경되지만 이미지 속성의 UIImage는 변경되지 않습니다.

UIImageView * ImageViewOnScroll; 
//set image and zoom it 
... 
UIImageView * newImageView = [[UIImageView alloc] initWithImage:ImageViewOnScroll.image]; 
newImageView.frame = ImageViewOnScroll.frame; 
: 당신은 단지 다른 UIImageView에 조정이 이미지를 표시 할 경우

, 당신은 같은 이미지를 바로있는 UIScrollView에서 확대있는 UIImageView의 프레임과 같은 새의 UIImageView 프레임을 설정있는 UIImage의 크기를 변경하고 사용하지 말아야합니다

경우 당신은 다음과 같은 간단한 방법으로, 예를 들어 그것을 할 수 변경된 크기의 새로운있는 UIImage를 만들려면 몇 가지 이유 :

UIImage * resizeImage(UIImage * img, CGSize newSize){ 
    UIGraphicsBeginImageContext(newSize); 

    //or other CGInterpolationQuality value 
    CGContextSetInterpolationQuality(UIGraphicsGetCurrentContext(), kCGInterpolationDefault); 

    [img drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 
+0

AFAIK 언급 한 방법 (resizeImage)은 자른 이미지 부분 만 제공합니다. 확대 된 이미지를 제공하지 않습니다. – lostInTransit

+0

감사합니다 vladd, 내 목적을 달성하기위한 아이디어를 주셨습니다. 업데이트 된 질문을 참조하십시오. – lostInTransit

+1

위의 코드 (resizeImage 메서드)는 전체 이미지 크기를 반환합니다. 원래 이미지의 일부를 사용하려면 CGImageCreateWithImageInRect (CGImageRef 이미지, CGRect rect); 컨텍스트에서 CGImageCreateWithImageInRect와 그림을 결합하면 이미지의 일부를 가져 와서 크기를 조정하고 새 이미지의 모든 영역에 배치 할 수 있습니다. – Vladimir