Не удается загрузить PNG в C # на Mac OSX под управлением Mono - PullRequest
1 голос
/ 13 января 2011

В C # я пытаюсь загрузить файл png на Mac OSX, используя последнюю версию Mono

using System.Drawing;
Bitmap bmp = new Bitmap("test.png");

Я получаю следующую ошибку

Either the image format is unknown or you don't have the required libraries to decode this format [GDI+ status: UnknownImageFormat]

Это не происходит со всеми файлами PNG; только этот.
alt text

Сохранение в фотомагазине не исправит это, если я не переключусь на 8bpp. Есть ли что-то, что мне нужно установить для поддержки этого «специального» png файла? Прекрасно работает на Windows.

Ответы [ 2 ]

5 голосов
/ 14 января 2011

Я попытался загрузить этот файл с моно в моем Ubuntu и получил следующее исключение:

** (mono_load_bitmap:3490): WARNING **: PNG images with 48bpp aren't supported by libgdiplus.
Either the image format is unknown or you don't have the required libraries to decode this format [GDI+ status: UnknownImageFormat]
  at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0 
  at System.Drawing.Bitmap..ctor (System.String filename, Boolean useIcm) [0x00000] in <filename unknown>:0 
  at System.Drawing.Bitmap..ctor (System.String filename) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (string)  

Ошибка

Изображения PNG с 48bpp не поддерживаются libgdiplus

, похоже, имеет ту же природу, что и у вас на Mac.Быстрый поиск в Google не дал никакой информации о том, как это исправить.Я предлагаю попробовать открыть его с помощью Gdk.Pixbuf class:

Gdk.Pixbuf pic = new Gdk.Pixbuf("test.png");
// shows pixbuf in the Gtk.Image widget
Gtk.Image image = new Gtk.Image();      
image.Pixbuf = pic;

. Этот вызов не привел к ошибке в моей Ubuntu.

надеюсь, это поможет,С уважением

0 голосов
/ 13 января 2011

Вы проверили, может ли какое-либо приложение MacOS X просматривать изображение (возможно, с помощью libpng)?

...