كيفية حفظ bitmapimage / critablebitmap باستخدام SaveFileDialog في Silverlight 3.0؟
-
21-09-2019 - |
سؤال
كيف يمكن حفظ الخريطة القابلة للكتابة من Silverlight على نظام الملفات ، لست متأكدًا مما يجب فعله مع Filestream لجعل هذا العمل ، يمكن أن يكون في صورة نقطية ، PNG ، JPEG ، وما إلى ذلك ، طالما أن المكتبة التجارية غير مطلوبة.
هل من الممكن القيام بذلك؟
هذه هي مكالمتي إلى Saveedialog ، أدناه:
Dim SaveDialog As New SaveFileDialog
If SaveDialog.ShowDialog Then
Try
Using FileStream As Stream = SaveDialog.OpenFile
' Save Image File Code Here
End Using
Catch ex As Exception
End Try
End If
يحرر
ذكر إضافة إلى crinablebitmap لأن هذا هو ما يكتبه XAML الخاص بي ، أنا فقط بحاجة إلى حفظه ، هناك خاصية brinsablebitmap.pixels وهي مجموعة أحادية البعد من بكسل عدد صحيح ، يمكن وضعها في filestream ، وإذا كان الأمر كذلك ، كيف؟
فيما يلي بعض رمز المثال لدي الذي يكتب دفق البكسل إلى ملف ، ومع ذلك فهو يعمل لا "يخطو" البيانات والإخراج الناتج غير مجدي ، لكنه يكتب دفق الصور الخاص بي ، أحتاج فقط إلى معرفة كيفية تحديد- It-up بحيث يكون ملف نقطات (أو أي شيء آخر). لقد وجدت أمثلة JPEG و PNG من قبل ، لكن لا أحد منهم يشرح جيدًا كيف يعملون ، فقد يتعين علي استخدام طريقة PNGencoding لأن هذا هو الوحيد الذي سيدمج في قاعدة الكود الخاصة بي. ولكن هل هناك نسخة من ملف BMP بسيط هناك؟
Dim Image As Imaging.WriteableBitmap = _Style.Image
Dim Area As Integer = Image.PixelWidth * Image.PixelHeight
For Raster As Integer = 0 To Area - 1
Dim Pixel As Integer = Image.Pixels(Raster)
Dim Bytes() = BitConverter.GetBytes(Pixel And &HFF)
FileStream.Write(Bytes, 0, 4)
Next
المحلول
هناك العديد من المشفرات مفتوحة المصدر هناك:
fjcore: http://code.google.com/p/fjcore/
Encoder Joe Stegman's PNG: http://blogs.msdn.com/jstegman/archive/2008/04/21/dynamic-image-generation-in-silverlight.aspx
الحرة: http://freeimage.sourceforge.net/
يمكنك استخدام أي من هذه لتشفير تنسيقات مختلفة. إليك منشورًا حول حفظ خريطة brinsablebitmap بمجرد خبزها:
تحديث: بعد القيام ببعض البحث ، يبدو أن حفظ خريطة britablebitmap إلى ملف محدود في SL3 بسبب مشكلات الأمان. هناك حل بديل:
http://geekswithblogs.net/braulio/archive/2009/07/12/export-canvas-to-png-save-it-in-your-local.aspx
يبدو أنك مضطر إلى حفظ محتويات قماش إلى ملف. يجب أن تكون قادرًا على تعديل العينة لحفظ JPEG أو تنسيقات أخرى.
نصائح أخرى
لقد سبق أن كتبت هذا المنشور الذي يمر عبر كيفية حفظ xaml إلى صورة نقطية باستخدام صورة نقطية قابلة للكتابة ، ومربع الحوار حفظ و fjcore.
http://blog.blueboxes.co.uk/2009/07/21/rendering-xaml-to-a-jpeg-using-silverlight-3/