Масштабировать и сохранять UIImage из библиотеки фотографий в iPhone? - PullRequest
1 голос
/ 10 января 2012

Я пытаюсь уменьшить изображение, полученное из библиотеки фотографий при прикосновениях пользователя, аналогично тому, как мы делаем снимок с помощью камеры, используя UIImagepicker, для которого установлен метод Yes (или как приложение камеры).

Я пытаюсь использовать следующий метод, передавая некоторые параметры, основанные на касании, но я не получаю желаемого эффекта? Что я, возможно, делаю не так?

-(UIImage*)scaleToSize:(UIImage *)img:(CGSize)size
{


// Create a bitmap graphics context
    // This will also set it as the current context
    UIGraphicsBeginImageContext(size);

// Draw the scaled image in the current context
[img drawInRect:CGRectMake(0, 0, size.width, size.height)];

// Create a new image from current context
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

// Pop the current context from the stack
UIGraphicsEndImageContext();

// Return our new scaled image
return scaledImage;
}

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIImage *img = [self scaleToSize:imgView.image:CGSizeMake(touch1.x,touch1.y)];
        imgView.image=img;
}

также, как я могу сохранить масштабированное изображение, как только я его масштабирую?

1 Ответ

1 голос
/ 10 января 2012

Исходя из вашего комментария, изображение будет искажаться, поскольку оно будет рисовать изображение в указанном прямоугольнике, и если новые размеры не будут иметь такое же соотношение сторон (ширина / высота), как исходное изображение, то оно будет выглядеть искаженным.

Вам нужна логика, чтобы гарантировать, что ваши новые ширина и высота имеют одинаковое соотношение сторон, например:

CGFloat newHeight = imageView.frame.size.height * size.width / imageView.frame.size.width;

Если вы сделаете свой Графический контекст size.width и newHeight, а затем нарисуете ваше изображение в этом прямоугольнике, оно сохранит соотношение сторон.

Скорее всего, вам понадобится добавить дополнительную логику, чтобы создать новую ширину с учетом высоты или новую высоту с учетом ширины в зависимости от того, какое измерение было наибольшим.

Надеюсь, это поможет,

Dave

...