Image Resizen???

Status
Niet open voor verdere reacties.

WILLIAMXXX

Terugkerende gebruiker
Lid geworden
29 nov 2006
Berichten
1.246
Ik probeer een image te resizen! Ik krijg de melding:

Code:
Property Size is ReadOnly

Hoe kan je toch de size aanpassen?
 
Code:
        PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
        PictureBox1.Size = New System.Drawing.Size(30, 30)
 
is een allen lezen bestad
rechts klikken op foto --eigenschappen en vinkje weg halen bij alleen lezen
 
die opmerking slaat nergens op..

property is read-only , niet de file.
 
Het is eigenlijk ook niet de bedoeling om de picturebox te rezisen en de image te strechen...

Het is als volgt:

Code:
Dim I As Image
I = I.Fromfile...

Het is een afbeelding die wordt geopend door de gebruiken en daarna weer kan worden opgeslagen! Dus moet de image wel rezise worden!!!
 
system.drawing.image kan je alleen de system.drawing.size opvragen niet aanpassen.

de makkelijkste methode is om de image to kopieren in een nieuwe image met een specifieke afmeting.

Code:
        Dim I As System.Drawing.Image = Image.FromFile("C:\test.jpg")

        Dim B As New Bitmap(I.Width * 0.5, I.Height * 0.5, Imaging.PixelFormat.Format24bppRgb)
        Dim G As Graphics = Graphics.FromImage(B)

        G.InterpolationMode = Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
        G.DrawImage(B, 0, 0, B.Width, B.Height)

zoiets dus.
 
En hoe sla je de nieuwe(verkleinde) afbeelding op?
 
dit kan door de afbeelding in een picturebox te laten zien en die dan weer opslaan
 
Maar opslaan lukt alleen is de image helemaal zwart hij is wel verkleind!!!

Het probleem is dus (ik sla B op) dat B nog niet de inhoud van de image bezit...
 
Laatst bewerkt:
Dat is vrij logisch. Je gebruikt namelijk alleen de afmetingen van je file. Je zou hem moeten benoemen. Ik heb dit ook nog nooit gedaan, dus ik weet niet of het werkt. Zet dit eens achter het dimmen van B:
Code:
= I
Oid
 
Heb eindelijk een oplossing gevonden:

Met gebruik van een picturebox:
Code:
 Dim w, h As Integer
        w = PictureBox1.Image.Width / 2
        h = PictureBox1.Image.Height / 2
        Dim bmp As Bitmap = New Bitmap(w, h)
        Using g As Graphics = Graphics.FromImage(bmp)
            g.DrawImage(PictureBox1.Image, 0, 0, bmp.Width, bmp.Height)
        End Using

        PictureBox1.Image = bmp
        bmp.Save("C:\image.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

Direct vanuit een bestand:

Code:
Dim w, h As Integer
        Dim img As Image = Image.FromFile("C:\image1.jpg")
        w = img.Width / 20
        h = img.Height / 20
        Dim bmp As Bitmap = New Bitmap(w, h)
        Using g As Graphics = Graphics.FromImage(bmp)
            g.DrawImage(img, 0, 0, bmp.Width, bmp.Height)
        End Using


        bmp.Save("C:\image2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
 
Laatst bewerkt:
Ok, ondertussen had ik dit:

Code:
        PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)

        Dim bm As New Bitmap(PictureBox1.Image)
        Dim x As Int32 = PictureBox1.Image.Width
        Dim y As Int32 = PictureBox1.Image.Height

        Dim width As Integer = x * 0.5

        Dim height As Integer = y * 0.5

        Dim thumb As New Bitmap(width, height)

        Dim g As Graphics = Graphics.FromImage(thumb)

        g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic

        g.DrawImage(bm, New Rectangle(0, 0, width, height), New Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel)

        g.Dispose()

        thumb.Save(OpenFileDialog1.FileName.ToString & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

        bm.Dispose()

        thumb.Dispose()
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan