2013-08-19 2 views
0

В моем приложении я использую функцию загрузки изображения, и я хочу преобразовать загруженное изображение в 72 DPI, если изображение с более или менее DPI.конвертировать любое загруженное изображение в 72 DPI

мы можем сделать это с помощью cgimagecreate

Пожалуйста, предложите мне.

Спасибо.

+0

http://stackoverflow.com/questions/8048597/how-to-change-image-resolution-in-objective-c отвечает на ваш вопрос, используя NSImage – geekchic

+0

Что вы имеете в виду «преобразовать изображение в 72 DPI ?» DPI используется экранами и принтерами, так что размер пикселя может быть переведен в физический размер. Это не просто настройка, установленная на изображении. – borrrden

+0

@ Нихита да, у меня есть код для mac, но что я должен использовать в iOS, например, в mac - NSBitmapImageRep. Пожалуйста, предложите, если у вас есть идея. – Nikunj

ответ

0

Мы можем получить изображение с 72 DPI с помощью метода ниже, на самом деле нам нужно просто получить новое изображение из контекста, как показано ниже.

-(UIImage *)resizeImageFor72DPI:(UIImage*)image newSize:(CGSize)newSize 
{ 
CGRect newRect= CGRectZero; 

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] 
    && [[UIScreen mainScreen] scale] == 2.0) 
{ 
    //For retina image 
    newSize=CGSizeMake(newSize.width/2.0,newSize.height/2.0); 
} 
newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height)); 

CGImageRef imageRef = image.CGImage; 

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

// Set the quality level to use when rescaling 
CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height); 

CGContextConcatCTM(context, flipVertical); 
// Draw into the context; this scales the image 
CGContextDrawImage(context, newRect, imageRef); 

// Get the resized image from the context and a UIImage 
CGImageRef newImageRef = CGBitmapContextCreateImage(context); 
UIImage *newImage = [UIImage imageWithCGImage:newImageRef]; 

CGImageRelease(newImageRef); 
UIGraphicsEndImageContext(); 

return newImage; 
} 
+0

Если мне нужно изменить 300 точек на дюйм, то какие изменения мне нужно сделать в вашем коде? – Yatendra