Avatar billede montago Praktikant
28. december 2003 - 04:15 Der er 25 kommentarer og
1 løsning

Response.BinaryWrite

Jeg ville bare høre om der er nogen som kan hjælpe mig med at konstruere en udskrifning af en allerhelvedes lang bit-stream...

streamen laves af 2 FOR løkker, som returnere 1 pixel, i 24Bit farve...

kort sagt... dette stykke kode :
----------------------------------------------
strColor = "rgb(" & intRedNuance & "," & intGreenNuance & "," & intBlueNuance & ")"
        Response.Write("<td><table style='background-color:" & strColor & "' border=""0"" cellpadding=""0"" cellspacing=""0"" width=""1"" height=""1""><tr><td align=""center""></td></tr></table></td>")
-----------------------------------------------
skal laves om til til et billede...

i donno how...
Avatar billede dna Nybegynder
28. december 2003 - 15:18 #1
Du kunne bruge et image komponent? Den kan nemt tegne en 1x1 pixel´s billede.
Avatar billede montago Praktikant
28. december 2003 - 15:19 #2
yoda... men pointen er at jeg gerne vil have lavet et billede uf af 2 FOR løkker

<%
    Response.Buffer = True
    Dim Coolness, Tal
    Tal = 150
    FOR Coolness = 0 to Tal step 1
%>
<% 
    Dim intRed, intGreen, intBlue, strColor

    if (coolness <= int(Tal/6)) then 'TAL<50
        intRed         = int((coolness / int(Tal/6)) * 255)
        intGreen     = 255
        intBlue     = 0
    elseif (coolness > int(Tal/6)) and (coolness <= int(Tal/3)) then '50<Tal<100
        intRed         = 255
        intGreen     = int(((int(Tal/3) - coolness) / int(Tal/6)) * 255)
        intBlue     = 0
    elseif (coolness > int(Tal/3)) and (coolness <= int(Tal/2)) then '100<Tal<150
        intRed         = 255
        intGreen     = 0
        intBlue     = int(255*((coolness - int(Tal/3))/(int(Tal/2)-int(Tal/3))))
    elseif (coolness > int(Tal/2)) and (coolness <= int(Tal/1.5)) then '150<Tal<200
        intRed         = 255 - int(255*((coolness - int(Tal/2))/(int(Tal/1.5)-int(Tal/2))))
        intGreen     = 0
        intBlue     = 255
    elseif (coolness > int(Tal/1.5)) and (coolness <= int(Tal/1.2)) then '200<Tal<250
        intRed         = 0
        intGreen     = int(255*((coolness - int(Tal/1.5))/(int(Tal/1.2)-int(Tal/1.5))))
        intBlue     = 255
    else '250<Tal<300
        intRed         = 0
        intGreen     = 255
        intBlue     = 255 - int(255*((coolness - int(Tal/1.2))/(int(Tal)-int(Tal/1.2))))
    end if
   
   
   
%>
    <table border="0" cellspacing="0" cellpadding="0">
      <tr>
<%
    Dim Nuance, Tal2, Tal3, Gubbi
    Tal2 = 150
    For Nuance = 0 to Tal2 step 1
    Tal3 = int(Tal2 / 2)
    Gubbi = Nuance - (Tal2/2)
   
        if (Nuance < Tal2/2+1) then
            intRedNuance     = int(Nuance/Tal2 * intRed *2)
            intGreenNuance    = int(Nuance/Tal2 * intGreen *2)
            intBlueNuance    = int(Nuance/Tal2 * intBlue *2)
        elseif (Nuance > Tal2/2+1) then
            intRedNuance     = int(Nuance/Tal2 * intRed *2)
            intGreenNuance    = int(Nuance/Tal2 * intGreen *2)
            intBlueNuance    = int(Nuance/Tal2 * intBlue *2)
        end if
   
        strColor = "rgb(" & intRedNuance & "," & intGreenNuance & "," & intBlueNuance & ")"
        Response.Write("<td><table style='background-color:" & strColor & "' border=""0"" cellspacing=""0"" width=""2"" height=""2""><tr><td></td></tr></table></td>")
   
    Next
%>
      </tr>
    </table>
<%
    Next
%>
Avatar billede dna Nybegynder
28. december 2003 - 15:24 #3
Du kan jo med et imagekomponent bestemme præcis hvilken pixel, der skal have hvilken farve ved hjælp af kordinater. Så det burde vel ikke være noget problem.

dna
Avatar billede dna Nybegynder
28. december 2003 - 22:09 #4
Sikke da en god begrundelse fra at afvise et svar. Det kan vi jo rigtigt hjælpe dig videre med.
Avatar billede montago Praktikant
29. december 2003 - 00:37 #5
vi ?...

det jeg har brug for er scripts... ikke et prej
Avatar billede dna Nybegynder
29. december 2003 - 10:45 #6
Dette er jo ikke en gavebod, men et sted hvor man kan få hjælp. Dette ville sq ellers være nemt ellers. Så hver gang jeg fik en større programmeringsopgave, så kunne jeg bare dele den op og lave x antal spørgsmål, og så var mit job løst.

"vi" var skrevet som alle ekspertens brugere. Sjovt nok har du ikke fået nogen der gider lave din komplette løsning endnu ??????

dna
Avatar billede montago Praktikant
29. december 2003 - 16:18 #7
Hej fjols...

pointen med eksperten.dk er at man GIVER point for hjælpen...
hvis man hjælper FÅR man point...

poiten med ekperten.dk er at man lover point væk til den som kan hjælpe med et problem... jeg har i mange andre tilfælde fået hjælp i form af scripts...

det jeg så gør bagefter, er at implementere og integrere den kode jeg fik som hjælp i mit "project"...

pointen er at man får hjælp med ting som man ikke selv er i stand til umidlbart at løse !

Fat Klejner !
Avatar billede dna Nybegynder
29. december 2003 - 19:14 #8
haha...

Nu ved jeg ikke hvordan man fatter klejner, men du ved vist også mere om bagværk end om programmering!

dna
Avatar billede dna Nybegynder
29. december 2003 - 20:37 #9
Og så bare lige for at vise dig den løsning du leder efter, så kan du se den her:

http://www.popper.dk/test/

Lavet dynanisk som et billede ved hjælp af et billedekomponent. Det tog ca. 10 min at lave. En undskyldning for at kalde mig fjols og koden er din.

dna
Avatar billede montago Praktikant
29. december 2003 - 22:41 #10
grr :-)

okay... så undskyld da... syntes bare du var lidt provokerende...

Jeg kender jo ikke til de to metoder... BinaryWrite og Billedkomponenten... ellers ville jeg jo ikke spørge !
Avatar billede montago Praktikant
29. december 2003 - 22:43 #11
by the way... din pallette... er det en viderebygning af min... eller en du selv har lavet ?
Avatar billede dna Nybegynder
30. december 2003 - 00:54 #12
Hey montago

Paletten er lavet af din egen kode (Den nyeste version jeg kunne finde fra dit andet spørgsmål) Har bare brugt dine variabler "Coolness" og "Nuance" som x og y punkter for koordinaterne for de pixels der skulle farves. Det var faktisk kun at ændre et par linjer.

Jeg bruger komponentet dynImage, som er gratis og dækker de mest basale behov i den boldgade, men alle andre billedekomponenter ville kunne gøre det samme, og metoderne til det, vil sikkert hedde tæt på det samme. Dokumentation og download af dynImage kan ske her: http://www.oz.net/~cashton/dynimage.html

----------------------------------------------------
Koden:
----------------------------------------------------

<%
Dim oDynImage
Set oDynImage = CreateObject("DynImage.DynImage")
oDynImage.Open 300,300

'*****************************
' Start c/p fra montago (E.dk)
'*****************************

    Response.Buffer = True
    Dim Coolness, Tal
    Tal = 200
    FOR Coolness = 0 to Tal step 1

    Dim intRed, intGreen, intBlue, strColor

    if (coolness <= int(Tal/6)) then 'TAL<50
        intRed        = int((coolness / int(Tal/6)) * 255)
        intGreen    = 255
        intBlue    = 0
    elseif (coolness > int(Tal/6)) and (coolness <= int(Tal/3)) then '50<Tal<100
        intRed        = 255
        intGreen    = int(((int(Tal/3) - coolness) / int(Tal/6)) * 255)
        intBlue    = 0
    elseif (coolness > int(Tal/3)) and (coolness <= int(Tal/2)) then '100<Tal<150
        intRed        = 255
        intGreen    = 0
        intBlue    = int(255*((coolness - int(Tal/3))/(int(Tal/2)-int(Tal/3))))
    elseif (coolness > int(Tal/2)) and (coolness <= int(Tal/1.5)) then '150<Tal<200
        intRed        = 255 - int(255*((coolness - int(Tal/2))/(int(Tal/1.5)-int(Tal/2))))
        intGreen    = 0
        intBlue    = 255
    elseif (coolness > int(Tal/1.5)) and (coolness <= int(Tal/1.2)) then '200<Tal<250
        intRed        = 0
        intGreen    = int(255*((coolness - int(Tal/1.5))/(int(Tal/1.2)-int(Tal/1.5))))
        intBlue    = 255
    else '250<Tal<300
        intRed        = 0
        intGreen    = 255
        intBlue    = 255 - int(255*((coolness - int(Tal/1.2))/(int(Tal)-int(Tal/1.2))))
    end if

    Dim Nuance, Tal2
    Dim ROZ, GOZ, BOZ
        Tal2 = 150
    For Nuance = 0 to Tal2 step 1
       
        if (intRed > 127) then
            ROZ = int(255 - intRed    / 2 / 127 * 255)
        elseif (intRed < 127) then
            ROZ = int(255 - intRed    / 2 / 127 * 255) * -1
        end if
        if (intGreen > 127) then
            GOZ = int(255 - intGreen / 2 / 127 * 255)
        elseif (intGreen < 127) then
            GOZ = int(255 - intGreen / 2 / 127 * 255) * -1
        end if
        if (intBlue > 127) then
            BOZ = int(255 - intBlue  / 2 / 127 * 255)
        elseif (intBlue < 127) then
            BOZ = int(255 - intBlue  / 2 / 127 * 255) * -1
        end if
           
        if (Nuance < tal2/2) then
            intRedNuance    = int(Nuance/Tal2 * intRed *2)
            intGreenNuance    = int(Nuance/Tal2 * intGreen *2)
            intBlueNuance    = int(Nuance/Tal2 * intBlue *2)
        elseif (Nuance > tal2/2) then '(255-Farve)/100 X + Farve
            intRedNuance    = int((510-(2*intRed))/Tal2    * Nuance)    + (255-(510-(2*intRed)))
            intGreenNuance    = int((510-(2*intGreen))/Tal2    * Nuance)    + (255-(510-(2*intGreen)))
            intBlueNuance    = int((510-(2*intBlue))/Tal2    * Nuance)    + (255-(510-(2*intBlue)))
        end if
   
        intColor = (intRedNuance * 65536) + (intGreenNuance * 256) + intBlueNuance
       
        oDynImage.SetPixel Coolness,Nuance,intColor
   
    Next

    Next

'*****************************
' Slut c/p fra montago (E.dk)
'*****************************

Response.ContentType = "image/png"
Response.BinaryWrite oDynImage.Image
oDynImage.Close
%>


Håber du kan bruge det til noget.
Avatar billede montago Praktikant
30. december 2003 - 01:32 #13
yoo Du skal have fuld point for det svar !...

tak for hjælpen !...

problemet er jo at hvis man ikke lige fatter metoden, eller har prøvet den før (Method) så er det meget svært at komme igang ...

lav lige et gubbi svar så du kan score nogle point !

TAK !
Avatar billede dna Nybegynder
30. december 2003 - 13:13 #14
svar! ;)

Hvis du ønsker at vende paletten om, så skal du bare ændre:

oDynImage.SetPixel Coolness,Nuance,intColor
til
oDynImage.SetPixel Nuance,Coolness,intColor

dna
Avatar billede montago Praktikant
31. december 2003 - 02:11 #15
hmm yup... det fant jeg selv ud af...
Avatar billede montago Praktikant
31. december 2003 - 02:12 #16
tænkte om det var muligt via nogle koder at LÆSE et billede...

man kunne lave et Antialias filter i ASP... til png filer ;-) ... eller en gråtone konverter... osv... blot for morskabens skyld...

hvis du kender koden til at læse en pixels farve koordinat må¨du da gerne lige poste den!
Avatar billede dna Nybegynder
31. december 2003 - 06:43 #17
Hej montago..

Det burde være nemt nok! Se i dokumentationen fra det komponent jeg gav dig.. der er disse metoder:

Først til at åbne en billedefil:

LoadImage(x1, y1, [x2, y2,] filename)
Loads the image indicated by filename and copies it to coordinates (x1, y1). The file must be a Windows bitmap file (BMP or DIB). The parameters x2 and y2 are optional; if present, the image file will be stretched to fit the rectangle with top-left corner at (x1, y1) and bottom-right corner at (x2, y2).

Og så til at hente farven på 1 pixel ud:

GetPixel(x1, y1) returns integer
Gets the color of the pixel located at (x, y). See the colors section for more information on how interpret the returned value.

Er lige ud af landevejen!
Sig til hvis du ikke ved hvordan du skal bruge de metoder, så kan jeg godt hjælpe dig.

dna
Avatar billede montago Praktikant
31. december 2003 - 12:41 #18
det er vel noget med
<%
Dim oDynImage
Set oDynImage = LoadImage(x1, y1, [x2, y2,] filename)

For x1 = 0 to Bredde step 1
  For y1 = 0 to Højde step 1
    Getpixel(x1,y1)
      'formel som gør noget ved dette tal
      NyPixel = Formlens Resultat
        oDynImage.SetPixel x1,y1,NyPixel
  Next
Next

Response.ContentType = "image/png"
Response.BinaryWrite oDynImage.Image
oDynImage.Close
%>
Avatar billede montago Praktikant
31. december 2003 - 12:46 #19
lige nu arbejder jeg lidt for sjov på at lave en tredje For løkke... som skal lave resten af farvespectret... jeg mangler jo de sidste 16.3 mio farver..

men kan ikke lige hitte på hvordan jeg får lavet 256 billeder, og manipuleret dem alle...
Avatar billede montago Praktikant
31. december 2003 - 12:47 #20
måske med metoden som henter billedet igen !
Avatar billede montago Praktikant
31. december 2003 - 12:54 #21
ahh... skulle lige tænke mig om...

For X = 0 to 256 step 1
  For Y = 0 to 256 step 1
      Red    = @£$
      Green = $€$€
      Blue    = £$€{
  Next


For Z = 0 to 256 step 1
  intColor = (intRedLight * 65536) + (intGreenLight * 256) + intBlueLight
  oDynImage.SetPixel Light,HUE,intColor
 
  Next

Response.ContentType = "image/png"
Response.BinaryWrite oDynImage.Image
oDynImage.Close

Next

måske
Avatar billede montago Praktikant
31. december 2003 - 13:15 #22
<%
Response.Buffer = True
Dim oDynImage
Dim X, Y, Z
Dim Red1, Red2, Red3
Dim Green1, Green2, Green3
Dim Blue1, Blue2, Blue3

Set oDynImage = CreateObject("DynImage.DynImage")
    oDynImage.Open 256,256

    For X = 0 to 256 step 1
        Red1    = X
        Green1    = X
        Blue1  = X
        For Y = 0 to 256 step 1
            Red2    = Red1  + Y
            Green2    = Green1 + Y
            Blue2    = Blue1  + Y
            For Z = 0 to 256 step 1
                Red3    = Red2    + Z
                Green3    = Green2 + Z
                Blue3    = Blue2  + Z
           
                intColor = (Red3 * 65536) + (Green3 * 256) + Blue3
                oDynImage.SetPixel Light,HUE,intColor
            Next
            Response.ContentType = "image/png"
            Response.BinaryWrite oDynImage.Image
        Next
    Next
oDynImage.Close
%>
Avatar billede montago Praktikant
01. januar 2004 - 16:40 #23
Hey DNA... er det muligt at få lavet mere end et billede af gangen ?
Avatar billede dna Nybegynder
01. januar 2004 - 17:27 #24
Hey montago...

Hvorfor vil du lave mere end et billede ?
Avatar billede montago Praktikant
02. januar 2004 - 00:47 #25
fordi der er 255 x 255 x 255 farver i en komplet palette...

ellers må jeg finde på en ny måde at vise den på...

Endten bruger man HUE, Saturation og Luminance til at lave 16,7 mio farver... eller også bruger man Rød, Grøn og Blå.... alle er de længderne på den samme firkant som man kan kalde en komplet palette...

som koordinater er
Rød  = X
Grøn = Y
Blå  = Z
og da man kun kan tegne et lag ad gangen... er jeg nødt til endten at lave alle 256 Luminancerm, et efter et. eller også skal jeg lave et 4096x4096 billede som indeholder 16x16 luminancer..

jeg kan ikke helt finde ud af hvad der er lettest...

Mit seneste script ser sådan her ud :

<%
    Response.Buffer = True
    Dim imgWidth            'Defines the finished picture Width
    Dim imgHeight            'Defines the finished picture Height       
    Dim imgDepth            'Defines the finished picture Depth
    Dim Luminance            'Variable that holds the Luminance 0-255
    Dim oDynImage            'The Picture Component
    Dim HUE                    'Variable that holds the HUE 0-255
    Dim intRed                'HUE level for Red
    Dim intGreen            'HUE level for Green
    Dim intBlue                'HUE level for BLUE
    Dim strColor            'Finished color
    Dim intRedLuminance     'Luminance Level for Red
    Dim intGreenLuminance    'Luminance Level for Green
    Dim intBlueLuminance    'Luminance Level for Blue
    Dim intRedSaturation    'Saturation Level for Red
    Dim intGreenSaturation    'Saturation Level for Green
    Dim intBlueSaturation    'Saturation Level for Blue

    imgWidth  = 256       
    imgHeight = 256
    imgDepth  = 0        '0 til 255

    Set oDynImage = CreateObject("DynImage.DynImage")
    oDynImage.Open imgWidth,imgHeight

For HUE = 0 to imgHeight step 1
    if (HUE <= int(imgHeight/6)) then
        intRed         = 255
        intGreen     = int((HUE / int(imgHeight/6)) * 255)
        intBlue     = 0
    elseif (HUE > int(imgHeight/6)) and (HUE <= int(imgHeight/3)) then
        intRed         = int(((int(imgHeight/3) - HUE) / int(imgHeight/6)) * 255)
        intGreen     = 255
        intBlue     = 0
    elseif (HUE > int(imgHeight/3)) and (HUE <= int(imgHeight/2)) then
        intRed         = 0
        intGreen     = 255
        intBlue     = int(255*((HUE - int(imgHeight/3))/(int(imgHeight/2)-int(imgHeight/3))))
    elseif (HUE > int(imgHeight/2)) and (HUE <= int(imgHeight/1.5)) then
        intRed         = 0
        intGreen     = 255 - int(255*((HUE - int(imgHeight/2))/(int(imgHeight/1.5)-int(imgHeight/2))))
        intBlue     = 255
    elseif (HUE > int(imgHeight/1.5)) and (HUE <= int(imgHeight/1.2)) then
        intRed         = int(255*((HUE - int(imgHeight/1.5))/(int(imgHeight/1.2)-int(imgHeight/1.5))))
        intGreen     = 0
        intBlue     = 255
    else
        intRed         = 255
        intGreen     = 0
        intBlue     = 255 - int(255*((HUE - int(imgHeight/1.2))/(int(imgHeight)-int(imgHeight/1.2))))
    end if

    For Luminance = 0 to imgWidth step 1
        if (Luminance <= imgWidth/2) then
            intRedLuminance     = int(Luminance/imgWidth * intRed *2)
            intGreenLuminance    = int(Luminance/imgWidth * intGreen *2)
            intBlueLuminance    = int(Luminance/imgWidth * intBlue *2)
        elseif (Luminance > imgWidth/2) then '(255-Farve)/100 X + Farve
            intRedLuminance     = int((512-(2*intRed))/imgWidth  * Luminance) + (256-(512-(2*intRed)))
            intGreenLuminance    = int((512-(2*intGreen))/imgWidth * Luminance) + (256-(512-(2*intGreen)))
            intBlueLuminance    = int((512-(2*intBlue))/imgWidth  * Luminance) + (256-(512-(2*intBlue)))
        end if
            intRedSaturation    = int(((Luminance - intRedLuminance)/255  * imgDepth)  +  intRedLuminance)
            intGreenSaturation    = int(((Luminance - intGreenLuminance)/255 * imgDepth)  +  intGreenLuminance)
            intBlueSaturation    = int(((Luminance - intBlueLuminance)/255  * imgDepth)  +  intBlueLuminance)

        intColor = (intRedSaturation * 65536) + (intGreenSaturation * 256) + intBlueSaturation
        oDynImage.SetPixel Luminance,HUE,intColor
    Next
Next
Response.ContentType = "image/png"
Response.BinaryWrite oDynImage.Image
oDynImage.Close
%>
Avatar billede montago Praktikant
02. januar 2004 - 00:47 #26
dog med lidt fejl ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester