2012-04-26 6 views
3

Я пытаюсь уменьшить изображение в Objective-C, взятое с iPhone 4 и выше, поэтому я могу отправить его на сервер как можно быстрее. В настоящий момент изображение в полном размере занимает возраст.Изменение размера изображений Objective-C

В настоящее время разукрупнения я пытаюсь это:

CGSize imageSize; 

imageSize = CGSizeMake(484, 888); 

UIImage *img = [UIImage imageWithContentsOfFile:path]; 

UIGraphicsBeginImageContext(imageSize); 
[img drawInRect:CGRectMake(0,0,imageSize.width,imageSize.height)]; 
UIImage* realfrontImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
NSData *frontImageData = UIImageJPEGRepresentation(realfrontImage, 1.0); 

Это дает мне образ 320x460 Как я могу получить его размер я хотел 484x888.

Любая помощь будет высоко оценена.

+0

xcode - это просто редактор. – vikingosegundo

+0

Спасибо за редактирование очень устал. Спасибо за высказанные идеи. Они очень похожи на то, что я использую в данный момент, и в итоге у меня получается изображение размером 320x426, когда я просматриваю его на сервере. – chrisw

+0

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

ответ

0

// вызываем эту функцию с коэффициентом изменения размера ...

-(UIImage*)scaleByRatio:(float) scaleRatio 
{ 
    CGSize scaledSize = CGSizeMake(self.size.width * scaleRatio, self.size.height * scaleRatio); 
    CGColorSpaceRef colorSpace; 
    int bitmapBytesPerRow; 
    bitmapBytesPerRow = (size.width * 4); 

    //The output context. 
    UIGraphicsBeginImageContext(scaledSize); 
    CGContextRef context = context = CGBitmapContextCreate (NULL, 
          scaledSize .width, 
          scaledSize .height, 
          8,  // bits per component 
          bitmapBytesPerRow, 
          colorSpace, 
          kCGImageAlphaPremultipliedLast); 

//Percent (101%)  
#define SCALE_OVER_A_BIT 1.01 

//Scale. 
CGContextScaleCTM(context, scaleRatio * SCALE_OVER_A_BIT, scaleRatio *  SCALE_OVER_A_BIT); 
[self drawAtPoint:CGPointZero]; 

    //End? 
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return scaledImage; 
} 

Надежда, это поможет вам ...

+0

Извините, но как я могу использовать эту функцию, я получаю недопустимое значение в C99-предупреждении – chrisw

+0

'#import ' ... – Nit

+0

Должен ли я использовать его как категорию UIImage? –

0

Может быть, этот пост поможет вам: How to resize the image programmatically in objective-c in iphone

Осторожно. .. вы делаете это в Objective-C, ... не XCode. XCode - это приложение, в котором вы разрабатываете Objective-c. Так же, как Netbeans или Eclipse обычно используются для Java и PHP.

4
-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize { 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Этот метод позволяет уменьшить ваши изображения.

+0

Если я отправлю изображение, полученное из этого метода, я получаю изображение 320x426, когда я отправляю его на сервер, похоже, он подходит только к размеру экрана, как скриншот. – chrisw

+0

Я получаю EXC_BAD_ACCESS на CGBitmapContextCreate – chrisw

+0

Я обнаружил, что этот способ имеет утечку памяти, после чего iOS 5.0 видит следующее! http://stackoverflow.com/a/4712537/1752988 –

Смежные вопросы