[Silverlight][VB]輸出圖片(JPEG)

  • 4075
  • 0

摘要:[Silverlight][VB]輸出圖片(JPEG)

老話一句:「Google一下 就有答案了」

寫C#的可以看這個 點我

我只是把上列code改為VB版的...


Public Shared Sub SaveToFile(ByVal bitmap As WriteableBitmap)
        Dim wid As Integer = bitmap.PixelWidth
        Dim hei As Integer = bitmap.PixelHeight
        Dim bands As Integer = 2
        Dim raster()(,) As Byte = New Byte(bands)(,) {}
        Dim st As Stream
        Dim savedia As SaveFileDialog = New SaveFileDialog()
        If Not IsNothing(bitmap) Then
            savedia.Filter = "JPEG Files (*.jpeg)|*.jpeg"
            savedia.DefaultExt = ".jpeg"
            If savedia.ShowDialog() Then
                st = savedia.OpenFile()
            Else
                Return
            End If

            For index = 0 To bands
                raster(index) = New Byte(wid, hei) {}
            Next
            For row = 0 To hei - 1
                For col = 0 To wid - 1
                    Dim pixel As Integer = bitmap.Pixels(wid * row + col)
                    Dim tmp As Integer

                    tmp = (pixel >> 16) Mod 256
                    raster(0)(col, row) = (256 + tmp) Mod 256
                    tmp = (pixel >> 8) Mod 256
                    raster(1)(col, row) = (256 + tmp) Mod 256
                    tmp = pixel Mod 256
                    raster(2)(col, row) = (256 + tmp) Mod 256
                Next

            Next
            Dim model As ColorModel = New ColorModel() With {.colorspace = ColorSpace.RGB}
            Dim img As FluxJpeg.Core.Image = New FluxJpeg.Core.Image(model, raster)

            Using ms As System.IO.MemoryStream = New System.IO.MemoryStream
                Dim encoder As FluxJpeg.Core.Encoder.JpegEncoder = New FluxJpeg.Core.Encoder.JpegEncoder(img, 100, ms)
                encoder.Encode()
                ms.Seek(0, IO.SeekOrigin.Begin)
                Dim binary() As Byte = New Byte(ms.Length) {}
                Dim byteread = ms.Read(binary, 0, ms.Length)
                st.Write(binary, 0, binary.Length)
                st.Close()
            End Using
        End If