Je voudrais créer un bitmap en mémoire, définir certaines valeurs de pixels, puis enregistrer cette image sur le disque.cacao bitmap de rendu au fichier
Jusqu'à présent, j'ai l'NSBitmapImageRep:
image = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
pixelsWide:width
pixelsHigh:height
bitsPerSample:8
samplesPerPixel:4
hasAlpha:YES
isPlanar:NO
colorSpaceName:NSDeviceRGBColorSpace
bytesPerRow:0
bitsPerPixel:0];
Ensuite, il suffit d'ajouter quelques pixels comme ceci:
NSColor *color = [NSColor colorWithDeviceRed:1.0
green:1.0
blue:1.0
alpha:1.0];
[image setColor:color
atX:x
y:y];
Et finalement enregistrer l'image (au format TIFF, ce qui est idéal, mais un bon start)
NSData* TIFFData = [image TIFFRepresentation];
[TIFFData writeToFile:@"/temp/image.tiff" atomically:YES];
L'image enregistrée à partir de ce code est actuellement vide et ne montre que quelques-uns pixels dans le coin supérieur gauche. Je ne suis pas sûr d'où viennent les roues, mais il semble évident que je sors dans le mauvais sens?
Je donnerai ce un essai. Existe-t-il un moyen d'imprimer un seul pixel sans utiliser une opération de remplissage? Je suis sûr qu'il y a des frais généraux dans cette approche. – Nippysaurus
Je ne pense pas. Mais si vous vous inquiétez de ce niveau de performance, "[image setColor: color atX: x y: y]" sera probablement trop lent. À ce stade, vous voudrez allouer vous-même les données de l'image bitmap en tant que tampon malloc et y écrire directement, puis créer le représentant de l'image et l'enregistrer immédiatement. –