Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей / 23 сообщений из 23, страница 1 из 1
23.05.2019, 14:44
    #39817147
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Почему падает говношарп на 7 строке? Пытаюсь впечатать дату в изображение, а оно упирается.


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   private void PrintDataInLabel()
        {
            PointF location = new PointF(270, 383);
            Bitmap newBitmap;
            using (var bitmap = (Bitmap)Image.FromFile(Settings.TempLabelPng)) 
            {
                using (Graphics graphics = Graphics.FromImage(bitmap))
                {
                    using (Font arialFont = new Font("Arial", 25))
                    {
                        graphics.DrawString(DateTime.Now.ToString("dd.MM.yyyy"), arialFont, Brushes.Black, location);
                    }
                }
                newBitmap = new Bitmap(bitmap);
            }

            newBitmap.Save(Settings.TempLabelPng); 
            newBitmap.Dispose();
        }
...
Рейтинг: 0 / 0
23.05.2019, 14:47
    #39817150
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
ошибка то какая?
...
Рейтинг: 0 / 0
23.05.2019, 14:53
    #39817159
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Roman Mejtes,

Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
...
Рейтинг: 0 / 0
23.05.2019, 14:57
    #39817163
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
...
Рейтинг: 0 / 0
23.05.2019, 14:58
    #39817169
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Комментарии
Если изображение имеет индексированный формат пикселей, этот метод создает исключение с сообщением, «графический объект невозможно создать из образа, который имеет индексированный формат пикселей.» В следующем списке показаны форматы индексированных пикселей.

Format1bppIndexed

Format4bppIndexed

Format8bppIndexed

Индексированное изображение можно сохранить в другой формат с помощью Save(String, ImageFormat) метод и затем извлекать Graphics объект нового образа.

Этот метод также вызывает исключение, если изображение имеет один из следующих форматов пикселей.

Undefined

DontCare

Format16bppArgb1555

Format16bppGrayScale

Следует всегда вызывать Dispose метод для освобождения Graphics и связанные с ней ресурсы, созданные FromImage метод.
...
Рейтинг: 0 / 0
23.05.2019, 15:03
    #39817172
Супер_Пав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
EoltПочему падает говношарп
язык не для говнокодеров
...
Рейтинг: 0 / 0
23.05.2019, 15:24
    #39817192
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Konst_One,

Ясно, надо тогда так переделать.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 private void PrintDataInLabel()
        {
            PointF location = new PointF(270, 383);
            Bitmap newBitmap;
            using (var bitmap = (Bitmap)Image.FromFile(Settings.TempLabelPng))
            {
                var EditableImg = new Bitmap(bitmap);
                using (Graphics graphics = Graphics.FromImage(EditableImg))
                {
                    using (Font arialFont = new Font("Arial", 25))
                    {
                        graphics.DrawString(DateTime.Now.ToString("dd.MM.yyyy"), arialFont, Brushes.Black, location);
                    }
                }
                newBitmap = new Bitmap(EditableImg);
            }
            newBitmap.Save(Settings.TempLabelPng);
            newBitmap.Dispose();
        }
...
Рейтинг: 0 / 0
23.05.2019, 15:42
    #39817212
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
EoltПочему падает говношарп на 7 строке? Пытаюсь впечатать дату в изображение, а оно упирается.


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   private void PrintDataInLabel()
        {
            PointF location = new PointF(270, 383);
            Bitmap newBitmap;
            using (var bitmap = (Bitmap)Image.FromFile(Settings.TempLabelPng)) 
            {
                using (Graphics graphics = Graphics.FromImage(bitmap))
                {
                    using (Font arialFont = new Font("Arial", 25))
                    {
                        graphics.DrawString(DateTime.Now.ToString("dd.MM.yyyy"), arialFont, Brushes.Black, location);
                    }
                }
                newBitmap = new Bitmap(bitmap);
            }

            newBitmap.Save(Settings.TempLabelPng); 
            newBitmap.Dispose();
        }



Я попробовал - у меня все нормально работает.
Что там у вас в Settings.TempLabelPng ?
...
Рейтинг: 0 / 0
23.05.2019, 15:43
    #39817214
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Cat2,

путь к черно-белому PNG файлу
...
Рейтинг: 0 / 0
23.05.2019, 15:47
    #39817220
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Cat2,

У него формат файла неподдерживаемый.

ТC, я бы создал битмап в памяти, с нужными параметрами, потом отрисовал бы туда твою картинку, потом поверх отрисовал бы текст и все сохранял. Или, другой вариант, создать копию файла с другим форматом и рисовать текст уже туда (собственно, по ссылке, что выше приводили, там даже пример есть).
...
Рейтинг: 0 / 0
23.05.2019, 16:27
    #39817249
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
fkthatCat2,

У него формат файла неподдерживаемый.

ТC, я бы создал битмап в памяти, с нужными параметрами, потом отрисовал бы туда твою картинку, потом поверх отрисовал бы текст и все сохранял. Или, другой вариант, создать копию файла с другим форматом и рисовать текст уже туда (собственно, по ссылке, что выше приводили, там даже пример есть).

+1. Примерно так

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
private void PrintDataInLabel()
        {
            PointF location = new PointF(10, 10);
            Bitmap newBitmap;
            string SettingsTempLabelPng = @"D:\Pictures\config.png";
            using (var bitmap1 = Image.FromFile(SettingsTempLabelPng))
            {
                MemoryStream ms = new MemoryStream();
                bitmap1.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                var bitmap = Image.FromStream(ms);
                using (Graphics graphics = Graphics.FromImage(bitmap))
                {
                    using (Font arialFont = new Font("Arial", 25))
                    {
                        graphics.DrawString(DateTime.Now.ToString("dd.MM.yyyy"), arialFont, Brushes.Black, location);
                    }
                }
                newBitmap = new Bitmap(bitmap);
            }

            newBitmap.Save(SettingsTempLabelPng);
            newBitmap.Dispose();
        }
...
Рейтинг: 0 / 0
23.05.2019, 16:31
    #39817254
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Cat2,

Проще же к одной строчке свести

Код: c#
1.
 var EditableImg = new Bitmap(bitmap);
...
Рейтинг: 0 / 0
23.05.2019, 17:20
    #39817281
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
EoltCat2,

Проще же к одной строчке свести

Код: c#
1.
 var EditableImg = new Bitmap(bitmap);


Проще в качестве заготовки взять png 32 разряда
...
Рейтинг: 0 / 0
23.05.2019, 17:54
    #39817299
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Cat2,

Не могу, мне png другое приложение генерит
...
Рейтинг: 0 / 0
24.05.2019, 12:46
    #39817704
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
А как увеличить изображение в png по высоте? Имеется этикетка слева, нужно ее сделать более вытянутой, как с права.
...
Рейтинг: 0 / 0
24.05.2019, 12:49
    #39817711
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Eolt,

Разместить изображение на чистое полотно другого размера?
...
Рейтинг: 0 / 0
24.05.2019, 12:51
    #39817715
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
hVostt,

Наверное можно. А что более простых вариантов в шарпе нет?
...
Рейтинг: 0 / 0
24.05.2019, 13:15
    #39817735
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Код: c#
1.
2.
3.
4.
5.
6.
     private void TuningPrintSheet(object o, PrintPageEventArgs e)
        {
            Image img  = Image.FromFile(Settings.TempSheetPng);
            Bitmap newImg = new Bitmap(img, new Size(img.Size.Height+ 200,img.Size.Width));
            e.Graphics.DrawImage(newImg, e.PageBounds);
        }



Вот такое не срабатывает. Размер изображения остается прежним
...
Рейтинг: 0 / 0
24.05.2019, 13:37
    #39817752
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
EolthVostt,

Наверное можно. А что более простых вариантов в шарпе нет?

Вот этот умеет: https://imageprocessor.org/
...
Рейтинг: 0 / 0
24.05.2019, 13:52
    #39817763
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Короче удалось удлиннить этикетку вот так.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        private void TuningPrintSheet(object o, PrintPageEventArgs e)
        {
            var img  = Image.FromFile(Settings.TempSheetPng);
            var copy = new Bitmap(img.Size.Width, img.Size.Height + 40);
            using (Graphics graphics = Graphics.FromImage(copy))
            {
                var imageRectangle = new Rectangle(0, 0, copy.Width, copy.Height);
                graphics.DrawImage(img, imageRectangle, imageRectangle, GraphicsUnit.Pixel);
            }
             e.Graphics.DrawImage(copy, e.PageBounds);
        }
...
Рейтинг: 0 / 0
24.05.2019, 13:59
    #39817771
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
Мдя

Штрихкод не читается:
Код: c#
1.
   var copy = new Bitmap(img.Size.Width, img.Size.Height + 40);



Штрихкод читается:
Код: c#
1.
   var copy = new Bitmap(img.Size.Width, img.Size.Height + 50);
...
Рейтинг: 0 / 0
24.05.2019, 22:14
    #39818078
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
EoltКороче удалось удлиннить этикетку вот так.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        private void TuningPrintSheet(object o, PrintPageEventArgs e)
        {
            var img  = Image.FromFile(Settings.TempSheetPng);
            var copy = new Bitmap(img.Size.Width, img.Size.Height + 40);
            using (Graphics graphics = Graphics.FromImage(copy))
            {
                var imageRectangle = new Rectangle(0, 0, copy.Width, copy.Height);
                graphics.DrawImage(img, imageRectangle, imageRectangle, GraphicsUnit.Pixel);
            }
             e.Graphics.DrawImage(copy, e.PageBounds);
        }


Офигеть. Это Нобелевка, однозначно
...
Рейтинг: 0 / 0
25.05.2019, 00:22
    #39818107
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей
EoltКороче удалось удлиннить этикетку вот так.

Ага, разместить на полотне по-больше :)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Невозможно создать объект графики из изображения, имеющего индексированный формат пикселей / 23 сообщений из 23, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]