GDI + تحويل الصور من Metafile إلى JPEG / GIF يؤدي إلى خلفية سوداء

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

سؤال

لذلك أقوم بتحويل ملف تعريف (EMF ليكون دقيقا) إلى JPEG أو GIF (لا يهم طالما أنه متوافق مع المتصفحات) وعندما أقوم بالتحويل، كل بكسلات شفافة تتحول إلى اللون الأسود. ليس لدي أي فكرة عن كيفية القيام بذلك في GDI + ولكن هنا هي الطريقة التي أستخدمها لحفظ الملف:

Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream)
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif)
هل كانت مفيدة؟

المحلول

تحقق من موقع بوب باول على الويب. لديه طن طحن متري من GDI + الأشياء.هذا واحد على وجه التحديد لأجهزة ترانس

نصائح أخرى

كما أفهمها، لا يحتوي ملف التعريف على معلومات للخلفية - فهي ببساطة شفافة.

عمل بسيط حوله هو لون الخلفية ببساطة اللون الذي تريده.

على سبيل المثال، يقوم الكود أدناه بإنشاء صورة نقطية بنفس الحجم مثل الصورة الأصلية، وجعل الخلفية بيضاء ثم توجه صورة ملف التعريف أعلى الخلفية.

        Rectangle imageRect = new Rectangle(0, 0, originalImage.Width, originalImage.Height);
        Bitmap newImage = new Bitmap(originalImage.Width, originalImage.Height);
        Graphics g = Graphics.FromImage(newImage );
        g.FillRectangle(new SolidBrush(Color.White), imageRect);
        g.DrawImage(originalImage, new Point(0, 0));

فهمي هو أنك بحاجة إلى تقديم معلومات إلى الإطار، فيما يتعلق بتنسيق الصورة للوجهة والصور المصدرية من أجل ترجمة قنوات ألفا بشكل صحيح.

المعلومات الملونة على وجه التحديد: بت لكل بكسل وما إذا كان هناك أو لا يوجد كل بكسل ألفا أو لون شفاف أو قيمة ألفا واحدة للصورة بأكملها - أشياء مثل هذا.

ومع ذلك، لست متأكدا من كيفية القيام بذلك في VB (أو في .NET على الإطلاق لهذه المسألة) - يمكنني استخدام Native C ++ لهذه الأنواع من العمليات ...

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