摘要:[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