كيفية حفظ bitmapimage / critablebitmap باستخدام SaveFileDialog في Silverlight 3.0؟

StackOverflow https://stackoverflow.com/questions/1394109

سؤال

كيف يمكن حفظ الخريطة القابلة للكتابة من 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 بمجرد خبزها:

http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2009/03/18/silverlight-3-1320-بتيماب-أب-2F00-WritablebitMap.aspx

تحديث: بعد القيام ببعض البحث ، يبدو أن حفظ خريطة 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/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top