Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Bild(fraktal) mit Xcode erstellen

Bild(fraktal) mit Xcode erstellen

martin8509.03.0922:16
Hallo liebe Xcode-Profis,

Ich habe eine Frage bzw. eine Bitte um einen Tipp:

Ich bin dabei ein Programm, das Fraktale zeichnet, zu programmieren. Es ist nach einigen Tutorials das erste richtige Programm das ich mit Xcode schreibe, soll heißen: so wirklich viel Ahnung habe ich (noch) nicht.

Es hakt bei mir jetzt an folgender Stelle:
Nachdem ich ausgerechnet habe an welcher Pixel welche Farbe haben soll, weiß ich nicht , wie ich das in ein Bild umwandeln kann, das angezeigt und gespeichert werden kann. (geeignete Klasse dafür wäre wohl - wenn ich das richtig verstanden habe - NSBitmapRef)

Gibt es eventuell eine einfache Möglichkeit aus einem Array mit Farben oder Integer Zahlen ein Bild zu erstellen?

Schönen Gruß und vielen Dank schonmal im Voraus,

Martin
0

Kommentare

iCode
iCode16.03.0908:16
Die Klasse NSBitmapImageRep sollte passen. Die hat dafür Methoden:
+ (id)imageRepWithData:(NSData *)bitmapData
+ (NSData *)TIFFRepresentationOfImageRepsInArray:(NSArray *)array

0
iCode
iCode16.03.0910:22
PS: Du könntest auch direkt in ein NSImage oder NSView zeichnen. Das könnte einfacher sein.
0
martin8516.03.0910:59
Hallo,

Danke für die Tipps.

Das scheint aber trotzdem Die bereits fertigen Bilddaten zu brauchen, (jedenfalls verstehe ich die Apple-Seiten zu NSImage so...).

Und da liegt mein Problem, ich weiß nicht, wie ich die errechneten Bilder bspw. als .bmp Datei speichere, und hab auch kein Einsteiger-Tutorial zu dem Thema gefunden.

Ich konnte das Problem erstmal umgehen indem ich die Bilder als .ppm-Pixelmap speichere, nur leider kann ich es in dem Format nicht wieder importieren und innerhalb des Programms darstellen.

Meine Hoffnung war ja, dass so etwas wie:
- erstelle Bild mit Länge x und Breite y Pixel
- für i=1 bis x, für j=1 bis y
setze Farbe des Pixels (i,j) auf den ausgerechneten Wert
- speichere Bild im Format xyz oder zeige es an

relativ einfach umzusetzen wäre.

Falls das nicht geht, bin ich aber auch mit meiner momentanen Lösung ganz zufrieden, ist halt nur nicht ganz so komfortabel, da ich die Bilder dann noch mit dem Grafikkonverter in ein gebräuchlicheres Format umwandeln muss.

Gruß und nochmal vielen Dank,
Martin
0
iCode
iCode16.03.0911:23
Das kann die Klasse NSBitmapImageRep doch auch. Dafür gibt es diese Methode:

initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:
0
iCode
iCode16.03.0911:30
PS: Du kannst die auch mit NULL initialisieren, und deine Pixel z.B. via setPixel:atX:y: direkt da rein zeichnen.
0
martin8516.03.0911:33
Ah ok, das war mir so nicht bewusst, das werde ich mal ausprobieren!
0
iCode
iCode16.03.0912:26
Wenn Dir das zu "High Level"-mäßig ist, kannst Du anstatt dessen auch vorher mit der Funktion CGImageCreate() ein CFImage erzeugen, und da drin herum werkeln. Dann kann man einfach mit initWithCGImage: eine NSBitmapImageRep initialisieren.

Wenn Du z.B. in CoreImage einsteigen willst, kannst Du anstatt dessen auch CIImage und die Methode imageWithBitmapData:bytesPerRow:size:format:colorSpace: verwenden. Danach das gleiche Spiel mit der NSBitmapImageRep. Einfach mit initWithCIImage: initialisieren.

Die Möglichkeiten sind vielfältig.

Du solltest in jeden Fall mal "Introduction to Cocoa Drawing Guide" lesen.

0
martin8516.03.0912:40
Ich hab es jetzt erstmal mit NSBitmapImageRep versucht bekomme aber noch Fehlermeldungen.

Da ich jetzt leider erstmal keine Zeit mehr hab, muss ich mich demnächst mal wieder ransetzen.

Vielen Dank auf jeden Fall estmal für deine vielen Anregungen!

0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.