Foro | | | | Rainer Hoefs | ¡Hola zusammen,
Yo muß indizierte 256-Farben Bitmaps, also con eigener Palette, bearbeiten y necesidad dazu Ayuda.
Mapa de bits se en el Speicher geladen.
Davon se una Kopie erstellt el en una entsprechenden Zona rechts erweitert se.
Auf el angefügten Zona se una Rectángulo gemalt con el Palettenindex 249.
Dann voluntad darauf algunos Linien con cierto Palettnnummer elaborado voluntad.
Danach se el Mapa de bits durchsucht, y-Linie para y-Linie jeweils de links después de rechts. Jedes Pixel se en el Farbnummer geprüft, se una vorher festgelegte Farbnummer gefunden se en el neuen Zona en gleicher y-Linie una entsprechender Punkt gesetzt, usw.
Das todo Yo ya como Macro en un Grafikprogramm (Grafx2) con Lua geschrieben y funktioniert hay einwandfrei.
Yo möchte aber el gleiche Programa como selbständige Profano-EXE haben en lo auch sin Grafx2 benutzen a puede.
Was me ahora fehlt son el entsprechenden Características en Profano:
Palettennummer% = Getpixel(X,Y) SetPixel(x ,y, Patettennummer%) Line(x1, y1, x2, y2, Palettennummer%) Rectángulo(x1, y1, x2, y2, Palettennummer%)
Wer ha como una Tip, oder soetwas ya veces gemacht y kann me una Tip geben.
Vielen Dank en el voraus Rainer |
| | | | |
| | H.Brill | GetPixel y SetPixel hay doch ya. Yo gehe veces su de, daß con Palettennummer% una Farbwert gemeint es. Line ha zwar no Farb-Parámetro, aber el puede ser bastante simplemente con USEP vorher einstellen. Und con UseBrush voluntad incluso verschiedene Schraffuren y el Farbe para Rectángulo eingestellt.
Also müßte sí alles como ser. Und con StartPaint...EndPaint schaltest du en el entsprechende Mapa de bits en. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 03.05.2019 ▲ |
| |
| | Rainer Hoefs | ¡Hola H. Brill,
Exactamente esta Características ir no, como ellos sólo el Übergabe de RGB( ? , ? , ? )-Werten trabajo.
Yo muß aber exakte Palettenindizies transferencia, also de el Palette el Nr. 249 (u otros zwischen 0 y 255).
Das ginge natürlich en uno binär geöffneten BMP con binärem escribir. Pero esto es extremo aufwändig.
trotzdem danke Rainer |
| | | | |
| | H.Brill | Sí, qué es porque el Palettennummer%, de el du sprichst ? Se puede auch con el Características
cada Farbanteile rausziehen, sodaß uno trotzdem con RGB() trabajo kann :
Yo meinte etwa así :
|
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 04.05.2019 ▲ |
| |
| | Rainer Hoefs | Nein, así va el no.
In uno 256-Farben Mapa de bits hay después de el Encabezamiento una Palette con 3*256 Farbwerten como z.B 001 092 128 para el Farbe 1 254 003 178 para Farbe 2 oder 082 182 209 para 178 y 001 092 128 para el Farbe 200 also gleicher Farbton como Farbe 1 usw.
In el Mapa de bits-Zona son entonces sólo el Referenzen a el Palette gesetzt also 1 2 178 2 200 2 1 178 2 1 usw.
Alle Infos, wo welcher Zona, Encabezamiento, Infoheader, Coreheader, Palette y Mapa de bits en el File beginnen son en el Encabezamiento gespeichert.
Beim Auslesen en un entsprechenden Programa como z.B. Grafx2 oder el uralten DPaint2 se sólo gelesen welchen Paletteneintrag el Punkt ha, also 1 2 oder 178. Dabei es egal welcher Farbton en RGB dahintersteht. Der Punkt ha el Referenz como Palettennummer% a 3 RGB-Werten en el Palette
Yo muß nun el BMP así auslesen: si la Palettennummer% vom Pixel(X,Y) el Nummer 2 es entonces Setpixel(X1,Y, Palettennummer%), si el Nummer 178 es entonces...
En Profano puede ser el no tun, porque como voluntad el RGB-Werte como gesamte Zahl gelesen. Beim setpixel se entonces simplemente una Punkt gesetzt el a nächst passenden Farbe stimmt, en diesem Fall also en Farbe 200 en el Punkt sería el 1 gesetzt, como ellos sí beide el gleichen Valor haben. Liegen el Farben en el Palette eng zusammen, kommt una wirres Bild esta fuera.
Yo kopiere hier veces el LUA-Code hinein para mejor Verständnis:
--Adds a weft-stearing-system right side to the design --created by Rainer Hoefs - www.rh-design.eu --This script is free for your personal use. --Lo voluntad folgende Linien angesetzt --direkt neben el Design Fb 249 Linie 1 --entonces Fb 4 Linie 2 --Streifen con benutzten Schußfarben Fb 51 - 57 Linie 3 --entonces Fb 1 Linie 4 --Streifen con benutzten Schußfarben Fb 51 - 57 Linie 5 --entonces FB 0 a Trennung Linie 6 --entonces 7 Linien con el Fb 51 - 57 je después de auftreten en el Design a Kontrolle Linien 7 - 13
run("../samples_2.4/libs/memory.lua") dofile("../samples_2.4/libs/dawnbringer_lib.lua") dofile("../carpetdesign/include/_language.lua")
--****************************************************
if language == "DE" then txt1="Schußsteuerungs-Sistema rechts vom Design ansetzen" txt2="max. Schußwechsler" txt3="erste Farbe en el Design" txt4="max. Farben pro Shußlinie" más txt1="Add weftstsystem right from the design" txt2="max. weftsystems" txt3="first color en design" txt4="max. colors por weftline" end
--****************************************************
w, h = getpicturesize()
StartColor = 51 MaxColorPerWeft = 1 WeftSystems = 7
ok, WeftSystems, StartColor, MaxColorPerWeft = inputbox( txt1, txt2, WeftSystems, 1, 20, 7, txt3, StartColor, 1, 255, 3, txt4, MaxColorPerWeft, 1, 7, 2)
if ok then -- neue Designgröße berechnen y Design entsprechend vergößern newdesignw = w + 6 + WeftSystems oldw = w setpicturesize(newdesignw, h) updatescreen() -- Weiße Fläche con festen Linien rechts vom Design dibujar drawfilledrect(oldw,0,newdesignw-1,h-1,249) -- rechts el Platz en Fb.249 anfügen db.line(oldw + 1,0,oldw + 1,h-1,4) -- erste Linie con Fb. 4 db.line(oldw + 3,0,oldw + 3,h-1,1) -- zweite Linie con Fb. 1 db.line(oldw + 5,0,oldw + 5,h-1,0) -- zweite Linie con Fb. 1 updatescreen() -- Alle Zähler zurücksetzen WeftColorFound = 0 SearchColor = StartColor EndColor = StartColor + (WeftSystems - 1) ControlLine = oldw + 6 -- Design Schuß para Schuß durchsuchen y Punkte en el Linien conjunto! for y = 0, h-1, 1 do -- el Schußlinien absuchen for SearchColor = StartColor, EndColor , 1 do -- una Farbe después de el otro suchen for x = 0, oldw - 1, 1 do -- el Fäden el Schußlinie después de y después de prüfen c = getpicturepixel(x, y) -- Pixel einlesen if c == SearchColor then -- si Farbe vom Pixel con Suchfarbe übereinstimmt WeftColorFound = WeftColorFound + 1 -- Zähler gefundene Farbe conjunto if WeftColorFound > MaxColorPerWeft then -- si mehr Farben en el Schuß como erlaubt Fehlermeldung messagebox("Mehr como "..MaxColorPerWeft.." Schußfarben gefunden!\n"..WeftColorFound.." gefunden, "..MaxColorPerWeft.." erlaubt!\nPosition: "..x.." / " ..y) end if WeftColorFound == 1 then putpicturepixel(oldw + 2, y, c) -- Pixel en Steuerlinie 1 conjunto elseif WeftColorFound > 1 then putpicturepixel(oldw + 4, y, c) -- Pixel en Steuerlinie 2 conjunto end putpicturepixel(ControlLine, y, c) -- Kontrollpunkt conjunto updatescreen() -- messagebox("Found SearchColor","X = "..x.."\nY = "..y.."\nSearchColor = "..SearchColor.."\nEndColor = "..EndColor.."\nControlLine = "..ControlLine.."\nWeftColorFound = "..WeftColorFound) romper end end ControlLine = ControlLine + 1 end WeftColorFound = 0 ControlLine = oldw + 6 end updatescreen() finalizepicture() end;
Bitte no a el textilen Begriffen como Design, Weftsystem oder Schußlinien stören. Weft y Schuß = Y-Linie |
| | | | |
| | H.Brill | Puesto que hay lo determinado auch para XProfan einiges. por ejemplo
'########################################
'Farbpalette de Bitmaps auslesen
'########################################
'########################################
'Andrea Miethe Mai 2002
'########################################
SetTrueColor 1
Declarar Info#,RGBQuad_1Bit#,RGBQuad_4Bit#,RGBQuad_8Bit#
Declarar Dateiname$,Colors&,x%,Col&,B%,H%
Dim Info#,200'nimmt el BitmapInfos en
Dateiname$ = @LOADFILE$("Mapa de bits invitar :","*.BMP")
Asignar #1,Dateiname$
OpenRW #1
@BlockRead(#1,Info#,0,200)'BitmapInfos einlesen
Case Word(Info#,28) = 1 : Colors& = 2
Case Word(Info#,28) = 4 : Colors& = 16
Case Word(Info#,28) = 8 : Colors& = 256
window %maxx+1,0-640,480
cls RGB(192,192,192)
USEP 0,0,RGB(255,255,255)
If Word(Info#,0) <> 19778
Imprimir "Kein Bitmap"
Endif
If Word(Info#,28) > 8
Imprimir "Kein Palettenbild"
Endif
If Colors& = 2
Dim RGBQuad_1Bit#,8' 2 Farben-Palette
Seek #1,54'hier beginnt el Palette
@BlockRead(#1,RGBQuad_1Bit#,0,8)'BitmapInfos einlesen
h% = 0
Sinestar encargado x% = 8
Col& = RGB(byte(RGBQuad_1Bit#,x%+2),byte(RGBQuad_1Bit#,x%+1),byte(RGBQuad_1Bit#,x%))
Usebrush 1,Col&
Rectángulo b%,h% - b%+20,h%+20
add x%,4
add B%,20
if b% > 300
add h%,20
b% = 0
endif
EndWhile
Elseif Colors& = 16
Dim RGBQuad_4Bit#,64' 16 Farben-Palette
Seek #1,54'hier beginnt el Palette
@BlockRead(#1,RGBQuad_4Bit#,0,64)'BitmapInfos einlesen
h% = 0
Sinestar encargado x% = 64
Col& = RGB(byte(RGBQuad_4Bit#,x%+2),byte(RGBQuad_4Bit#,x%+1),byte(RGBQuad_4Bit#,x%))
Usebrush 1,Col&
Rectángulo b%,h% - b%+20,h%+20
add x%,4
add B%,20
if b% > 300
add h%,20
b% = 0
endif
EndWhile
Elseif Colors& = 256
Dim RGBQuad_8Bit#,1024'256 Farben-Palette
Seek #1,54'hier beginnt el Palette
@BlockRead(#1,RGBQuad_8Bit#,0,1024)'BitmapInfos einlesen
h% = 0
Sinestar encargado x% = 1024
Col& = RGB(byte(RGBQuad_8Bit#,x%+2),byte(RGBQuad_8Bit#,x%+1),byte(RGBQuad_8Bit#,x%))
Usebrush 1,Col&
Rectángulo b%,h% - b%+20,h%+20
add x%,4
add B%,20
if b% > 300
add h%,20
b% = 0
endif
EndWhile
Endif
CloseRW #1
setwindowpos %hwnd = 0,0-640,480
Waitinput
Disponer RGBQuad_1Bit#
Disponer RGBQuad_4Bit#
Disponer RGBQuad_8Bit#
Disponer Info#
end
|
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 04.05.2019 ▲ |
| |
| | Rainer Hoefs | ¡Hola H. Brill,
vielen Dank para el Tip. Sí, el saber Yo, habe lo 1998 auch ya en un Programa así ähnlich ausgeführt.
Yo hoffte allerdings, lo en unkompliziertere Art y Weise lösen a puede, como encima el binäre Lesen y Carta el Mapa de bits.
Aber como muß Yo wohl veces mi Uralt-Routinen aktivieren y desafortunadamente con entsprechendem, Aufwand ändern.
Sombrero Andreas, el sí wirklich spitze war, auch una Rutina para el Auslesen el Mapa de bits (also Bildteil) geschrieben? Und si sí, wo puede ser el auffinden?
Gracias Rainer |
| | | | |
| | H.Brill | Den Code Tuve de : [...]
Was el Auslesen el Mapa de bits betrifft, wirst du wohl selber ran necesario. Algo como es sí auch muy selten gefragt. Hier Todavía una Erläuterung de Frank Abbing :
Tiempo sehen, si Yo todavía hinbekommen. Also, el Bmp-Formato con el Offsets:
0 siempre "BM" (2) 2 Longitud el Expediente (4) 6 =0 (4) 10 Offset des ersten Grafikbytes (4) 14 =40 (4) 18 Breite des Bilds (4) 22 Höhe des Bilds (4) 26 ...unwichtig...
Zuerst LongInt Offset 10 auslesen. Hier fangen el Grafikdaten a. Pro Pixel voluntad 3 Bytes benötigt siempre en el Reihenfolge Blau - Grün - Rot. Nach cada Línea se el Pixelfolge con Nullbytes en una por 4 teilbare Anzahl ergänzt. El Pixel des Bilds son de links unten después de rechts oben angeordnet.
Yo denke, daß al Auslesen des Bildteils bastante simplemente hinbekommt.
Kommt entonces natürlich darauf a, qué alles así a Características braucht.
PS: El ProSpeed.dll bietet una Función, el el Nutzdaten uno Bilddatei en una Byte-Array speichert. ¿Puede du dir evtl. auch veces ansehen. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 04.05.2019 ▲ |
| |
| | H.Brill | Hier Todavía algo mehr Infos gefunden : [...]
El Profbmp.dll Vor allem en el beigefügten Textdatei profbmp.txt posición interessante Infos. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 04.05.2019 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 2 subscriber: |