Avatar billede jobless Nybegynder
18. april 2006 - 20:51 Der er 5 kommentarer

Fejl ved flere 'resizes' af samme billede

Hej.

Jeg bruger følgende funktion for at resize billeder:
    Public Class ImageResizer
        Public Shared Function RezizeImage(ByVal b As Bitmap, ByVal width As Integer, ByVal height As Integer) As System.Drawing.Bitmap
            Dim bmpOut As System.Drawing.Bitmap = Nothing
            Try
                Dim bmp As Bitmap = b
                bmpOut = New Bitmap(width, height)
                Dim g As Graphics = Graphics.FromImage(bmpOut)
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear
                g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
                g.FillRectangle(Brushes.Transparent, 0, 0, width, height)
                g.DrawImage(bmp, 0, 0, width, height)
                bmp.Dispose()
                g.Dispose()
                g = Nothing
            Catch
                Return Nothing
            End Try
            Return bmpOut
        End Function
    End Class


Funktionen kaldes ved hjælp af:
b = ImageResizer.RezizeImage(bOrg, MaxSize * iRatio, MaxSize)

Når jeg kun kalder min resize en enkelt gang fra en knap, virker det ok (selvom jeg ikke er helt tilfreds med kvaliteten), men problemet opstår først når jeg kalder funktionen 2 gang (pga. at jeg vil lave både en thump og en resize af samme billede).
Fejlen er at jeg får en 'argumentet er ugyldigt' i følgende linie:
g.DrawImage(bmp, 0, 0, width, height)

Er der nogen som kan hjælpe med dette ?

MVH

JoBless
Avatar billede dr_chaos Nybegynder
19. april 2006 - 08:44 #1
lav den om til en public funktion og lav en konstruktør til klassen.
Lav en ny instans af klassen når du skal bruge funktionen.
Avatar billede jobless Nybegynder
19. april 2006 - 08:51 #2
Jeg er newbie, og vil gerne have lidt hjælp til at ændre det......
Avatar billede dr_chaos Nybegynder
19. april 2006 - 09:03 #3
Public Class ImageResizer
Private Function ImageResizer() As Public
End Function
        Public Shared Function RezizeImage(ByVal b As Bitmap, ByVal width As Integer, ByVal height As Integer) As System.Drawing.Bitmap
            Dim bmpOut As System.Drawing.Bitmap = Nothing
            Try
                Dim bmp As Bitmap = b
                bmpOut = New Bitmap(width, height)
                Dim g As Graphics = Graphics.FromImage(bmpOut)
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear
                g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
                g.FillRectangle(Brushes.Transparent, 0, 0, width, height)
                g.DrawImage(bmp, 0, 0, width, height)
                bmp.Dispose()
                g.Dispose()
                g = Nothing
            Catch
                Return Nothing
            End Try
            Return bmpOut
        End Function
    End Class

End Class

på aspx siden

Dim i As ImageResizer=  New ImageResizer()
'resize image
i.RezizeImage
Avatar billede jobless Nybegynder
21. april 2006 - 09:02 #4
Jeg sletter (fordi det fejler):
Private Function ImageResizer() As Public
End Function

Derudover får jeg samme fejl ved 2. kald af funktionen, ganske som tidligere (parameteren er ugyldig), i linien: g.DrawImage(bmp, 0, 0, width, height)
Avatar billede dr_chaos Nybegynder
25. april 2006 - 08:01 #5
hvilket argument er ugyldigt ?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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