Ich habe das folgende Stück Code, um eine PDF-Seite zu einem CGImage zu konvertieren:Konvertieren von PDF in CGImage dreht Bild zu negativer
func testPrint(pp:UnsafePointer<Void>) { // debug to see bits
var p = UnsafePointer<UInt8>(pp)
var res = ""
for _ in 0..<200 {
res += "\(p.memory) "
p = p.advancedBy(1)
}
print(res)
}
func pageOneFromPDF(file:String) -> CGImage? {
let url = NSURL(fileURLWithPath: file)
let pdfDocument = CGPDFDocumentCreateWithURL(url)
let pageOne = CGPDFDocumentGetPage(pdfDocument, 1)
let rect = CGPDFPageGetBoxRect(pageOne, .MediaBox)
let width = Int(rect.size.width)
let height = Int(rect.size.height)
let context = CGBitmapContextCreate(nil, width, height, 8, width, CGColorSpaceCreateDeviceGray(), CGImageAlphaInfo.Only.rawValue)!
CGContextClearRect(context, rect)
CGContextDrawPDFPage(context, pageOne)
testPrint(CGBitmapContextGetData(context))
return CGBitmapContextCreateImage(context)
}
Dieser wandelt meine PDF-Seite in der Tat in einen grauen skalierten Bitmap. Das einzige Problem: Die resultierende CGImage
Farbe ist invertiert (schwarz wird weiß und umgekehrt). Ich habe mit den Parametern CGBitmapContextCreate
herumgespielt, aber kein Glück.
P.S. Ich habe dieses Stück Code, um die negativen zu positiven zu umkehren:
func inverse(pp:UnsafePointer<Void>, size:Int) {
var p = UnsafeMutablePointer<UInt8>(pp)
for _ in 0..<size {
p.memory = 255-p.memory
p = p.advancedBy(1)
}
}
, das funktioniert, aber natürlich würde Ich mag das Bild nach rechts in erster Linie zu bekommen.
EDIT: Ich muss etwas Dummes tun, denke ich. Wenn ich wie oben und invertieren das ganze Bild mache, sieht es aus wie
wo die Wiedergabe meint es die Finder-Vorschau und die links und rechts. Wie ich jetzt bemerke, invertiert dies Teile des Bildes. Ich habe versucht, mit @Tricertops Code und bekam (die schwarzen Blöcke oben/unten aus einer Liste mit anderen PDF-Dateien)
und offensichtlich hat dies die richtigen Grauwerte, aber es gibt einige schwarze Maske, die die unterlegt Bild. Der reine Text auf der linken Seite ist jetzt unsichtbar, aber die Bilder erscheinen korrekt.
Ich habe das versucht, aber das scheint immer noch nicht den Punkt zu bekommen. Ich habe einige weitere Informationen zu meiner Frage hinzugefügt. –
Ich weiß nicht, was ich gestern gemacht habe, aber offensichtlich war ich nicht bewusst (genug). Genau das habe ich vermisst. Danke vielmals! –