Пользовательские декодеры для файлов PNG - PullRequest
0 голосов
/ 02 мая 2019

Я загрузил изображение из руководства пользователя (см. attachment ) и мне нужно его преобразовать. Когда я попытался загрузить его с помощью следующего кода, я получил исключение: «Изображение не может быть загружено. Доступные декодеры: \ r \ n - JPEG: JpegDecoder \ r \ n - PNG: PngDecoder \ r \ n - GIF: GifDecoder \ r \ n - BMP: BmpDecoder \ r \ n ". Можно ли применить нестандартный декодер и где их найти?

using (var originalImage = new MemoryStream(...))
using (var image = Image.Load<Rgba32>(originalImage))
{

}

1 Ответ

0 голосов
/ 03 мая 2019

Связанное изображение может быть декодировано с использованием ImageSharp. Как говорит @tocsoft в комментариях, скорее всего вы забыли сбросить позицию входного потока.

Вот два изображения. Во-вторых, мы загрузили и перевернули вертикально, используя следующий код:

using (var image = Image.Load(Path.Combine(inPath, "-7bH2hfA.png")))
{
    image.Mutate(x => x.Flip(FlipMode.Vertical));

    image.Save(Path.Combine(outPath, "-7bH2hfA-flipped.png"));
}

Ваше входное изображение:

Input image

Наш перевернутый вывод изображения:

Flipped output image

EDIT

При первоначальном тестировании изображения я использовал r-click save, который дал мне действительный png. С тех пор я использовал прямую загрузку с Dropbox, которая выдает исходный файл.

Это не png! На самом деле это файл webp.

Hex Dump of original image

...