2013-01-07 52 views
0

我使用以下代碼將文本添加到圖像:圖像的像素化視網膜顯示器上加入文本

+(的UIImage *)addTextToImage:(的UIImage *)IMG文本:(的NSString *)的text1 {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

// float scaleFactor = [[UIScreen mainScreen] scale]; 
int w = img.size.width; 

int h = img.size.height; 

// CGSize size = CGSizeMake(768, 768); 

CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); 

// CGContextScaleCTM(context, scaleFactor, scaleFactor); 


CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage); 

CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1); 

char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];// \"05/05/09\"; 

CGContextSelectFont(context, "Times New Roman", 14, kCGEncodingMacRoman); 
CGContextSetTextDrawingMode(context, kCGTextFill); 

CGContextSetRGBFillColor(context, 0, 0, 0, 1); 



//rotate text 

CGContextSetTextMatrix(context, CGAffineTransformMakeRotation(-M_PI/8)); 

CGContextShowTextAtPoint(context, 70, 88, text, strlen(text)); 

CGImageRef imageMasked = CGBitmapContextCreateImage(context); 

CGContextRelease(context); 

CGColorSpaceRelease(colorSpace); 
UIImage* newImg = [UIImage imageWithCGImage:imageMasked]; 

CGImageRelease(imageMasked); 

return newImg; 

}

這工作得很好非視網膜。但是當我在Retina顯示屏上測試它時,圖像和文字都是像素化的。我搜索了一個解決方案,並遇到像這樣的計算器問題:CoreGraphics for retina display

我嘗試了什麼被建議(你可以看到它在代碼中註釋掉),但它沒有幫助。我試着用比例因子縮放我的座標,我也試過只做 CGContextScaleCTM(UIGraphicsGetCurrentContext(),scale,scale);

圖像保持像素化。下面是我如何加載圖像並調用addTextToImage方法:

frameImg = [UIImage imageNamed:@「thumbnail_frame_stacked」]; frameImg = [使用addTextToImage:frameImg text:text];

不用說,我有圖像的非視網膜和視網膜版本。我究竟做錯了什麼?

回答

0

前幾天我問了一個非常類似的問題,我用自己的解決方案回答了這個問題。見here

相關問題