Avatar billede cmau Nybegynder
16. april 2007 - 08:42 Der er 10 kommentarer og
1 løsning

Få et billedets højde og bredde

Hej Eksperter

Jeg har lidt et problem, jeg har kodet et program som kan lave tumbs ud af flere hundrede billeder på en gang, men når jeg skal gemme billedet, kan jeg ikke regne de rigtige dimentioner ud da jeg ikke kan finde billedets bredde og højde. Hvordan gør jeg det? Det eneste jeg har er en sti til billederne.
Avatar billede bernhof Nybegynder
16. april 2007 - 09:44 #1
Jeg går ud fra, at du, hvis der skal laves thumbs, indlæser billederne i hukommelsen. Dette kan fx gøres således:

Dim b As New Bitmap("C:\billede.jpg")
'Benyt Height og Width egenskaber på Bitmap klassen:
Messagebox.Show("Størrelse: " & b.Height & " x " & b.Width)
Avatar billede cmau Nybegynder
16. april 2007 - 21:11 #2
Jeg vil prøve det i morgen, men skal jeg så på en eller anden måde ikke clear hukommelsen igen?
Avatar billede bernhof Nybegynder
17. april 2007 - 00:54 #3
Jo, det er en god idé:

b.Dispose()
Avatar billede bernhof Nybegynder
24. april 2007 - 20:56 #4
Har du fået det til at virke?
Avatar billede bernhof Nybegynder
05. maj 2007 - 17:59 #5
cmau?
Avatar billede cmau Nybegynder
07. maj 2007 - 08:15 #6
Har først haft lidt tid igen nu, men kan ikke rigtig få det til at virke, det meste der har med mit billede at gøre. Jeg prøver lige i dag og så melder jeg tilbage.
Avatar billede cmau Nybegynder
07. maj 2007 - 08:33 #7
Jeg har problemer.

Men det har noget at gøre med hvordan jeg laver mine billeder.

Jeg har nedenstående kode, som fint resizer et billede til 200x200
        Dim b As New Bitmap("C:\billede.jpg")
        Dim newImg As Image = New Bitmap(200, 200)
        Dim g As Graphics = Graphics.FromImage(newImg)
        g.DrawImage(b, 0, 0, 200, 200)
        newImg.Save("c:\test.jpg")

Hvis jeg så fletter det sammen med min funktion, som står her under, får jeg følgende fejl:
www.dury.dk/rod/fejl.JPG

Koden:
    Function CreateImage(ByVal image, ByVal newheight, ByVal newwidth, ByVal newname, ByVal algorithm)
        Dim finalheight As Integer
        Dim finalwidth As Integer
        sti = address & "\" & image
        Dim b As New Bitmap(sti)
        Dim newImg As Image = New Bitmap(b.Width, b.Height)
        Dim g As Graphics = Graphics.FromImage(newImg)
        My.Computer.FileSystem.CreateDirectory(DestDir.Text)
        If algorithm = "Ingen størrelsesændring" Then
            newwidth = newImg.Width
            newheight = newImg.Height
        ElseIf algorithm = "Bedste tilpasning" Then
            finalheight = newheight
            finalwidth = Math.Round((finalheight / (newImg.Height / newImg.Width)))
            If finalwidth > newwidth Then
                finalwidth = newwidth
                finalheight = Math.Round((finalwidth / (newImg.Width / newImg.Height)))
            End If
            MsgBox("Width: " & finalwidth & vbNewLine & "Height: " & finalheight)
        End If
        If Not algorithm = "Ingen størrelsesændring" Then
            g.DrawImage(b, 0, 0, newheight, newwidth)
        End If
        'If namechange.Text = "Med tal" Then
        '    newname = imagenames
        'End If
        newImg.Save(DestDir.Text & "\" & newname)
        b.Dispose()
        g.Dispose()
        newImg.Dispose()
        Return True
    End Function
Avatar billede cmau Nybegynder
07. maj 2007 - 08:53 #8
Hov fandt en del fejl :D.. nu dur det. Men hvordan ville jeg kunne tjekke om den bruger dispose()=
Avatar billede bernhof Nybegynder
08. maj 2007 - 14:06 #9
Du kan prøve at åbne din task manager (ctrl+shift+escape), kigge på fanebladet "Processes" og indlæse et stort billede i programmet. Du vil kunne se en stigning i mængden af memory, som det optager. Når Dispose kaldes, skulle der ligeledes gerne frigives en del memory. Men .NET frameworket klarer som oftest denne oprydning på egen hånd, så jeg tror du vil opdage, at det slet ikke er nødvendigt for dig at kalde Dispose i dette tilfælde. Dog er det meget god praksis at gøre det under alle omstændigheder.
Avatar billede cmau Nybegynder
09. maj 2007 - 20:24 #10
yes det virkede. Smider du svar.
Avatar billede bernhof Nybegynder
09. maj 2007 - 20:44 #11
Yep :)
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