在Cocoa中使用antialias绘制pdf

时间:2014-03-10 10:46:49

标签: objective-c image cocoa pdf

我正在开发一个需要将pdf转换为图像的应用程序。我面临的问题是在一些pdfs中有一些白线。

这是我用于将pdf转换为图像的代码。

NSPDFImageRep* pdfRep = [NSPDFImageRep imageRepWithContentsOfFile:path];
[pdfRep setCurrentPage:page];

NSBitmapImageRep* bmRep;

NSRect pdfBounds=[pdfRep bounds];

NSRect target=[NSBitmapImageRep scalingSizeFittingIn:pdfBounds.size targetSize:size];

bmRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
                                                pixelsWide:size.width
                                                pixelsHigh:size.height
                                             bitsPerSample:8
                                           samplesPerPixel:4
                                                  hasAlpha:YES
                                                  isPlanar:NO
                                            colorSpaceName:NSCalibratedRGBColorSpace
                                               bytesPerRow:0
                                              bitsPerPixel:0];

NSGraphicsContext* context = [NSGraphicsContext
                              graphicsContextWithBitmapImageRep:bmRep];

[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:context];
[[NSGraphicsContext currentContext] setShouldAntialias:NO];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[[NSGraphicsContext currentContext] setColorRenderingIntent:NSColorRenderingIntentPerceptual];

// draw the PDF rep into the bitmap rep.
[pdfRep drawInRect:target];

[NSGraphicsContext restoreGraphicsState];

如果我将ShouldAntialias设置为NO而不是图像为Image with antialise set to NO

这是将ShouldAntialias设置为YES Image with antialise set to YES

的图像

问题是如何摆脱白色条纹并保持图像平滑? 感谢。

0 个答案:

没有答案