2014-07-02 28 views
5

Hızlı bir şekilde çalışan jeneratörü, düzgün çalışmak için kullanıldı ancak şimdi bozuldu.
Bu bir hata mı, yoksa yanlış bir şey mi yapıyorum?Neden Mavericks'deki QLPreviewRequestSetDataRepresentation hata döndürüyor "CGImageCreate: geçersiz resim boyutu: 0 x 0" png için

 
OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, 
           CFURLRef url, CFStringRef contentTypeUTI, 
           CFDictionaryRef options) { 

    NSDictionary * myDoc = [NSDictionary dictionaryWithContentsOfURL:(NSURL *)url]; 

     if (myDoc) { 

      NSData * pngData = [myDoc valueForKey:@"pngPreview"]; 

      if (pngData) { 

       QLPreviewRequestSetDataRepresentation(preview,(__bridge CFDataRef)pngData, 
                 kUTTypeImage,NULL); 
      } 
     } 
} 

Doktorum İçinde veri olarak saklanan bir png önizleme ile normal Plist geçerli:

İşte benim kod.
pngPreview öğesinin png verileri içerdiğini kontrol ettim, resmi oluşturdum ve boyutu 350 × 350 idi.

Ancak, ben sürekli bu hataları alıyorum:

qlmanage[702] : CGImageCreate: invalid image size: 0 x 0.
qlmanage[702:303] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x9e27, name = 'com.apple.tsm.portname' See /usr/include/servers/bootstrap_defs.h for the error codes.
qlmanage[702:303] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x3f2b, name = 'com.apple.CFPasteboardClient' See /usr/include/servers/bootstrap_defs.h for the error codes.
qlmanage[702:303] Failed to allocate communication port for com.apple.CFPasteboardClient; this is likely due to sandbox restrictions

Uygulamam yüzden son 3 hataları önemli olduğunu sanmıyorum korumalı alan değildir.

Ben kUTTypePNG kullanırdık ama (şu anda İYE desteklenen diyor kUTTypeImage, kUTTypePDF, kUTTypeHTML, kUTTypeXML, kUTTypePlainText, kUTTypeRTF, kUTTypeMovie ve kUTTypeAudio QLPreviewRequestSetDataRepresentation için dokümanlar vardır) boşuna kUTTypeImage çalıştılar.

Dikkate alınması gereken diğer noktalar: Dokümanlar durumu: "Hızlı Bakış üretecinin ikilisinin evrensel olması ve yalnızca 32 bit olması gerekir." This page Ancak this page durumlar: "OS X v10.6 ve sonrası için, hem 32 hem de 64 bit için Hızlı Bakış üreteçleri oluşturmanız gerekir." Hangisi daha belirsiz…
Hedefimi nasıl belirlerim? benim resim çizmek için bir bağlam almak için QLPreviewRequestCreateContext kullanın: Alternatif bir yol gitmek karar verdik aynı sorun karşısında

+0

ise Eskiden çalışıyordu, o zaman bir böcek. İkili uyumluluk önemlidir. Http://bugreport.apple.com adresinden bir hata yaptınız mı? –

+0

Teşekkürler, ben de bunları doc'ları güncellemelerini söyleyeyim: tüm eski Xcode için, özellikle de hata ayıklama belgelerinin nasıl yanıltıldığını. – wdyp

+0

@wdyp Eğer yapabilirseniz, lütfen [OpenRadar] 'a (http://www.openradar.me/) gönderin, böylece diğerleri hatayı izleyebilir! –

cevap

3

çalıştığını En azından

QLPreviewRequestRef preview; // The preview request passed to GeneratePreviewForURL() 
CGImageRef image; // Create your CGImage however you like 
CGSize size = CGSizeMake(CGImageGetWidth(image), CGImageGetHeight(image)); 
CGContextRef ctxt = QLPreviewRequestCreateContext(preview, size, YES, nil); 
CGContextDrawImage(ctxt, CGRectMake(0, 0, size.width, size.height), image); 
QLPreviewRequestFlushContext(preview, ctxt); 
CGContextRelease(ctxt); 

...

+0

Teşekkürler! Bunu QLPreviewRequestCreateContext ile nasıl yapacağımı bilmiyorum. Bazı kodlar gönderir misiniz? Bunu soruma iyi cevap olarak işaretlerdim! Teşekkürler! – wdyp

+0

Yukarıdaki cevaba bir kod örneği ekledim, umarım yardımcı olur –

+0

Paylaştığınız için teşekkür ederiz! Yani denedim ve bu hatayı alıyorum… : CGContextDrawImage: geçersiz içerik 0x0. Bu ciddi bir hatadır. Bu uygulama veya kullandığı bir kitaplık geçersiz bir bağlam kullanıyor ve bu nedenle sistem kararlılığı ve güvenilirliğinin genel bir bozulmasına katkıda bulunuyor. Bu bildirim bir nezaket: lütfen bu sorunu düzeltin. Yaklaşan bir güncellemede önemli bir hata olacak. için [UYARI] Flushing önizleme bağlam Belki de NSData doğru şekilde görüntü oluşturdu vermedi – wdyp