2009-06-14 9 views

Répondre

2

Eh bien, un CGImage est pas un CALayer, alors que vous quittez évidemment quelques pas là-bas, mais je suppose que vous savez ce que vous parlez, en ce que le dessin à un CALayer ou autres joyeusetés.

Si votre question est sur la création CGImage s sans utiliser UIImage, vous pouvez essayer de regarder dans les fonctions suivantes:

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

Si vous connaissez à l'avance ce que sorte d'image c'est, il suffit d'utiliser la méthode appropriée. Sinon, vous devez regarder la signature du fichier pour voir s'il contient du PNG ou du JFIF. Bien sûr, cela nécessite de mettre en œuvre un CGDataProvider.

Je suppose que c'est exactement ce que la classe UIImage fait déjà. Si vous voulez faire sortir tous les bits de l'efficacité de cela, vous pouvez utiliser l'une des méthodes suivantes dans la classe UIImage:

+ (UIImage *)imageWithContentsOfFile:(NSString *)path 
+ (UIImage *)imageWithData:(NSData *)data 

La seule différence entre ces méthodes et

+ (UIImage *)imageNamed:(NSString *)name 

est que imageNamed: met en cache l'image. Si vous utilisez l'une des premières méthodes, ce n'est pas le cas.

+0

Merci pour cela. CGImageCreateWithJPEGDataProvider et CGImageCreateWithPNGDataProvider étaient exactement ce que je cherchais. –

17

Essayez ceci:

layer.contents = (__bridge id)[ uiimage CGImage ] ; 

HTH

Questions connexes