| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| ° Registriert seit: Aug 2002 Ort: Baden-Baden
Beiträge: 4.159
| Farben sortieren?
Hi, ich hab grade aus Spaß die Farbewerte eines Pixelbildes mit Array.sort(Array.NUMERIC); der Größe nach Auflisten lassen. Ich war etwas über das Resultat erstaunt, weil ich eine Sortierung nach HSV erwartet hätte. Stattdessen hat er mit die ganze Hexadezimalwerte tatsächlich der Größe nach sortiert. (Was ja auch richtig ist.) Jetzt die Frage: Wie würdet ihr vorgehen, wenn ihr einen Stapel an Hex Werten in folgender Reihenfolge sortieren wollen würdet => Schwarz RGB Weiß? Muss man die Werte da erst nach HSV konvertieren, dann sortieren, oder kann man die Dinge auch direkt als Hexwert abhandeln? Danke echo so siehts aus: Geändert von echo5-7 (19-05-2009 um 13:03 Uhr) |
| | |
| | #2 (permalink) |
| Raven-Kid Registriert seit: Feb 2006
Beiträge: 350
|
ohne jetzt eine konkrete Antwort zu haben will ich nur darauf Aufmerksam machen das du zumindest im RGB Farbraum die Farben nicht liniar nach Helligkeit sortieren kannst. Jede einzelne Farbe kann zu schwarz sowie zu weiß übergehen ...
|
| | |
| | #3 (permalink) |
| ° Registriert seit: Aug 2002 Ort: Baden-Baden
Beiträge: 4.159
|
hmmm.... ok, das wird wohl dann auf HSV hinauslaufen. Oder vielleicht finde ich beim scripten eine möglichkeit das ganze nicht erst umrechnen zu müssen, um es dann in richtiger reihenfolge zurück rechnen zu dürfen.
|
| | |
| | #4 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg
Beiträge: 4.350
|
Seltsam, müssten in deinem Bild nicht immer rote Farbtöne ganz am Anfang, oder ganz am Ende sein? (entspricht schließlich den führenden Stellen in Hex) Wie sollen denn Farben ähnlicher Helligkeit untereinandern sortiert werden? Warum sollte man sowas machen wollen?
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #7 (permalink) |
| ° Registriert seit: Aug 2002 Ort: Baden-Baden
Beiträge: 4.159
|
tjoa, warum stelllt jemand eine million domino steine auf, und andere schauen sich dann an, wie die umfallen.... ![]() was mich eben verwundert hat, war die struktur die da entsteht. ich hatte eigentlich erwartet, dass da in den zeilen irgendeine abstufung entsteht, und nicht diese harten brüche.... hier mal die klasse... Code: package de.kai_reinhardt
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
[SWF(width = "600", height = "600", backgroundColor = '0xFFFFFF', frameRate = '1')]
public class CompletlyRandomValue extends Sprite
{
private var bmpd : BitmapData;
private var bmpd_output : BitmapData;
private var bmp : Bitmap;
private var bmp_output : Bitmap;
private var output : Sprite;
private var storrage : Array;
private var _width : int;
private var _height : int;
public function CompletlyRandomValue():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
output = new Sprite ();
storrage = [];
_width = 600;
_height = 600;
addEventListener(MouseEvent.CLICK, deleteAll);
rollOut();
}
private function deleteAll(ev:MouseEvent) : void
{
removeChild(output);
output = new Sprite ();
storrage = [];
rollOut();
}
private function rollOut():void {
bmpd_output = new BitmapData(_width, _height, false, 0x000000);
for (var i:int = 0; i < _width; i++ ) {
for (var o:int = 0; o < _height; o++)
{
storrage.push((Math.random()) * 0xFFFFFF);
}
}
storrage.sort(Array.NUMERIC);
for (var a:int = 0; a < _width; a++ ) {
for (var b:int = 0; b < _height; b++)
{
bmpd_output.setPixel(b, a, storrage[ int(a*(bmpd_output.width)+b) ]);
}
}
bmp_output = new Bitmap(bmpd_output);
output.addChild(bmp_output);
addChild(output);
}
}
} Geändert von echo5-7 (20-05-2009 um 09:53 Uhr) |
| | |
| | #8 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
|
Du wirst auch den HSV Farbraum nicht einfach so linear von schwarz nach weiss aufdröseln können. Gibt halt 3 dimensionen, wenn du das linear ( 1 dimensional ) bringen willst musst du eine "Logik" definieren nach der das zu geschehen hat, wenn du RGB sortiert heisst das eben: 8 bit (0-255) Blau rauf zählen, dann 1 bit Grün, dann wieder acht bit Blau, dann 1 bit Grün, usw. bis man bei 8 bit Grün angekommen ist und danach kann man das Ganze nochmal für Rot wiederholen. Für HSV hiesse das das du bei einem Winkel anfängst (Blau) da die Helligkeit hochdrehst, dann hast du halt die Sättigung den Winkel anpassen muss. Wie stellst du dir denn vor das die Farben gereiht sein sollten?
__________________ Back to community with http://leichtgewicht.at |
| | |
| | #9 (permalink) |
| ° Registriert seit: Aug 2002 Ort: Baden-Baden
Beiträge: 4.159
|
hm, gute frage, soweit hab ich eigentlich noch nicht gedacht. ich wollte erstmal sehen wie das eigentlich aussieht, wenn ich die pixel neu sortiere. aber prinzipiell dachte ich, dass dunkle farben zuerst kommen, helle farben als letztes, bis zu weiß. innerhalb eines helligkeitswertes würde ich durch die einzelnen farben auf dem kreis gehen. der startpunkt auf dem kreis müsste sich nach dem endpunkt richten, der wiederrum an die nächst hellere farbe anschließen sollte. hmm... aber wenn man da schon bei HSV ist, müsste man ja die sättigung auch mit beachten... graue werte müssten denn in einem durchlauf des kreises am ende oder mittig platziert werden.... Jetzt wo ich grade drüber nachdenke, wird das wohl auf's Ambi-Ligth hinauslaufen. Man kann die Farben ja auch nach häufigkeit Gruppieren und prozentual der Bildfläche zuweisen. Wenn man die Position dann noch mit der Region des häufigsten Vorkommens koppel, müsste das einen Ambi-Ligth Effekt geben. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |