Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: sau от 01 декабря 2024, 21:14

Название: Сохранение картинки со штрихкодом
Отправлено: sau от 01 декабря 2024, 21:14
Картинка=СоздатьОбъект("Картинка");
Объект.РежимРисования(3);
Картинка.НарисоватьШтрихкод(Картинка,58,Знч);
Картинка.Сохранить("qr.bmp");

Не сохранется...
На форме (в Картинке) рисуется.
Есть решение?
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 01 декабря 2024, 21:50
А что такое "qr.bmp" - ?
Где он должен быть?

Тут в СП:
Сохранить(<?>);
Синтаксис:
Сохранить(<ИмяФайла>)
Назначение:
Сохранить картинку в файле в формате загрузки.
Параметры:
<ИмяФайла> - строка с именем файла.

Строка с именем файла должна быть с полным путем к нему, ну, например: "C:\Temp\qr.bmp"...
Иначе, он просто не понимает, где сохранять.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 01 декабря 2024, 22:19
А вообще, не все так просто...
С полным путем то он сохраняет, только в непойми-каком формате, и полученный файл не открывается...
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 01 декабря 2024, 22:40
Процедура Сформировать()
   ЗагрузитьВнешнююКомпоненту("FormEx.dll");
   Сервис = СоздатьОбъект("Сервис");
   Карт = СоздатьОбъект("Картинка");
   Карт.РежимРисования(3);
   Сервис.НарисоватьШтрихкод(Карт,58,"https://forum.dorex.pro/index.php?topic=202.0");
   Картин.УстановитьКартинку(Карт);
   Карт.Сохранить("C:\Temp\qr.bmp");
КонецПроцедуры

Картин - идентификатор картинки на форме.

Так и на форме рисуется, и в файл сохраняется, но файл некорректного формата.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: sau от 01 декабря 2024, 22:48
Цитата: MWW_Ruza от 01 декабря 2024, 21:50Строка с именем файла должна быть с полным путем к нему, ну, например: "C:\Temp\qr.bmp"...
Иначе, он просто не понимает, где сохранять.
Ну, конечно, это для краткости изложения :).
И речь, конечно, о возможности чтения файла...
Название: Re: Сохранение картинки со штрихкодом
Отправлено: leov-001 от 02 декабря 2024, 09:52
Йокселем воспользуйся
Название: Re: Сохранение картинки со штрихкодом
Отправлено: АЛьФ от 02 декабря 2024, 11:02
Такая проблема только с картинками, на которых штрих-код рисуется? Картинка, полученная методом РасширениеФормы::ПолучитьКартинку(), нормально сохраняется?
Название: Re: Сохранение картинки со штрихкодом
Отправлено: Харлампий Дымба от 02 декабря 2024, 11:20
Может это пригодится: метод Сохранить() выгружает картинку в файл с именем <ИмяФайла> в формате загрузки (загрузили в формате bmp — в этом формате и сохраним). Файл может быть следующих форматов:.wmf   .emf   .ico   .bmp   .dib   .rle.
Может попробовать каждый из этих форматов?
Хотя, как я понимаю, штрихкод в zint в Сервис::ПолучитьКартинку() в .png рисуется, поэтому штатными средствами вряд ли.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: sau от 02 декабря 2024, 12:00
Цитата: Харлампий Дымба от 02 декабря 2024, 11:20Может это пригодится: метод Сохранить() выгружает картинку в файл с именем <ИмяФайла> в формате загрузки (загрузили в формате bmp — в этом формате и сохраним). Файл может быть следующих форматов:.wmf   .emf   .ico   .bmp   .dib   .rle.
Может попробовать каждый из этих форматов?
Хотя, как я понимаю, штрихкод в zint в Сервис::ПолучитьКартинку() в .png рисуется, поэтому штатными средствами вряд ли.
Да, и пробовали предварительно загружать существующий файл указанных форматов, потом генерировать штрих-код. Результата нет.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 12:42
Тут похоже Формекс вообще ни при чем - это штатнвй метод 1С сохранения картинки так отрабатывает...
Вот, закомментировано все, что касается Формекса, и только загружается картинка готовая из библиотеки:

(https://content.foto.my.mail.ru/mail/m_w_w/590/h-597.jpg)

Процедура Сформировать()
   ЗагрузитьВнешнююКомпоненту("FormEx.dll");
//   Сервис = СоздатьОбъект("Сервис");
   Карт = СоздатьОбъект("Картинка");
//   Карт.РежимРисования(3);
//   Сервис.НарисоватьШтрихкод(Карт,58,"https://forum.dorex.pro/index.php?topic=202.0");
   Карт.Загрузить("Стрелки");
   Картин.УстановитьКартинку(Карт);
   Карт.Сохранить("C:\Temp\qr.bmp");
КонецПроцедуры

Пустая форма, кроме кнопки сформировать только один объект - картинка с идентификатором "Картин".
"Стрелки" - картинка из библиотеки картинок конфигурации.
Файл - пишется нормально, никаких ошибок не дает - но он так-же не читаем, как и QR-код, если его нарисовать Формексом...
Вот, что на выходе: https://cloud.mail.ru/public/dJkX/JHpQrangt

PS #7 - А как формат сохранения задать? Только расширением файла? Ну, пробовал, все доступные в методе расширения - кроме имени файла (точнее, его расширения), ничего не меняется, содержимое остается тем-же.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 13:04
Цитата: АЛьФ от 02 декабря 2024, 11:02Картинка, полученная методом РасширениеФормы::ПолучитьКартинку(), нормально сохраняется?

Надо попробовать... Но, тут задача у ТС похоже немного другая, если я правильно понял, ему нужно картинку сохранять из формы, а не из печатной формы...
А тут, из СП:
// процедура вызывается из объекта Картинка, расположенного на печатной форме
Если только что-то мудрить с отрисовкой ПФ без ее вывода, и созранения в файл картинки, полученной в нее этим методом... Надо попробовать такие "танцы с бубном". Только пока не понятно, будет без вывода ПФ работать или нет.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 14:22
Не, с печатной формой тоже не работает, хоть с Показать(), хоть без:

Процедура Сформировать()
   Таб      = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   Таб.ВывестиСекцию("Секция_1");
//   Таб.Показать();
КонецПроцедуры

Процедура ПолучитьКартинку(Карт)
   Картин    = СоздатьОбъект("Картинка");
   Картин.Загрузить("Стрелки");
    Карт.УстановитьКартинку(Картин);
   Карт.Сохранить("C:\Temp\qr.bmp");
КонецПроцедуры

(https://content.foto.my.mail.ru/mail/m_w_w/590/h-598.jpg)

Файл сохранчется, но так-же не читаем.
 
Название: Re: Сохранение картинки со штрихкодом
Отправлено: Djelf от 02 декабря 2024, 14:34
Все вы позабыли... Даже то что не знали ;)


Картинка=СоздатьОбъект("Картинка");
Сервис=СоздатьОбъект("Сервис");
Сервис.НарисоватьШтрихкод(Картинка,58,Штрихкод);
Система=СоздатьОбъект("Система");
Система.СохранитьКартинку(ИмяКаталога,ИмяФайла,Картинка);
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 14:38
Так, (файлик предварительно сохранен из интерфейса конфигуратора интерактивно и открывается), пересохраненный программно, тоже не читаем:

Процедура Сформировать()
    Таб        = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Секция_1");
    Таб.Показать();
КонецПроцедуры

Процедура ПолучитьКартинку(Карт)
    Картин    = СоздатьОбъект("Картинка");
//    Картин.Загрузить("Стрелки");
    Картин.Загрузить("C:\Temp\Стрелки.bmp");
    Карт.УстановитьКартинку(Картин);
    Карт.Сохранить("C:\Temp\qr.bmp");
КонецПроцедуры
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 14:55
Да, так:

Процедура Сформировать()
   ЗагрузитьВнешнююКомпоненту("FormEx.dll");
   ЗагрузитьВнешнююКомпоненту("1CPP.dll");
   Картинка    = СоздатьОбъект("Картинка");
   Сервис      = СоздатьОбъект("Сервис");
   Сервис.НарисоватьШтрихкод(Картинка,58, "https://forum.dorex.pro/index.php?topic=202.new#new");
   Система    = СоздатьОбъект("Система");
   Система.СохранитьКартинку("C:\Temp\", "Qr.bmp", Картинка);
КонецПроцедуры

Работает, сохраняет идеально... Только это уже не FormEx, и не штатные методы 1С, а 1cpp...
Задачу решает полностью, без затрат практически, все равно во всех рабочих базах 1cpp используется, но не отвечает на вопрос - почему штатный метод 1С уродует картинку при сохранении.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: АЛьФ от 02 декабря 2024, 14:57
Цитата: MWW_Ruza от 02 декабря 2024, 12:42Тут похоже Формекс вообще ни при чем - это штатнвй метод 1С сохранения картинки так отрабатывает...

Насколько я помню, 1С при сохранении bmp в начало файла пишет размер файла.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: Харлампий Дымба от 02 декабря 2024, 15:00
Цитата: MWW_Ruza от 02 декабря 2024, 12:42PS #7 - А как формат сохранения задать?
Так вот получается, что никак. Типа сохраняет в том формате, в котором картинка была перед этим загружена через Загрузить(). А мы-то картинку через Сервис::ПолучитьКартинку()опечатка Сервис::НарисоватьШтрихкод() получаем. Там, если я правильно понял, штрихкод рисуется в png.
Может и правда Йоксель поможет.
А может ТС проще параллельно рисовать на форме и такой же отрисовывать в таблицу mxl, чтобы потом хранить. Надо по задаче смотреть.



Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 15:02
Кстати, вопрос - а где-бы взять нормальный als к 1cpp - ? А то мой видимо очень старый и не знает половину методов...

(https://content.foto.my.mail.ru/mail/m_w_w/590/h-599.jpg)

А то "трудно вспоминать, когда не знаешь, да еще и забыл" и быстро подсмотреть негде...
На сайте конечно можно, но, это то еще занятие, учитывая тот объем инфы, которая там есть...
Название: Re: Сохранение картинки со штрихкодом
Отправлено: Djelf от 02 декабря 2024, 15:04
Цитата: MWW_Ruza от 02 декабря 2024, 14:55но не отвечает на вопрос - почему штатный метод 1С уродует картинку при сохранении.
Картинка
Сохранить(<?>);
Синтаксис:
Сохранить(<ИмяФайла>)
Назначение:
Сохранить картинку в файле в формате загрузки.
Параметры:
<ИмяФайла> - строка с именем файла.

Без конвертирования!
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 15:06
Цитата: Харлампий Дымба от 02 декабря 2024, 15:00Типа сохраняет в том формате, в котором картинка была перед этим загружена через Загрузить().

Не работает. Пробовал. См. выше.

Цитата: Харлампий Дымба от 02 декабря 2024, 15:00Может и правда Йоксель поможет.

Может и поможет, скорее всего. Но, и 1cpp отрабатывает отлично.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: Djelf от 02 декабря 2024, 15:09
Да и хрен с ним, Система.СохранитьКартинку  работает, что вам еще надо то?
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 15:10
Цитата: Djelf от 02 декабря 2024, 15:04Сохранить картинку в файле в формате загрузки.
Параметры:
<ИмяФайла> - строка с именем файла.
Без конвертирования!

Ну, не знаю, может я конечно что-то и накосячил в пробном примере, но именно это я пробовал в #13, результирующий файл все равно нечитаем.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 15:14
Цитата: Djelf от 02 декабря 2024, 15:09Да и хрен с ним, *******  - работает, что вам еще надо то?

Лично мне - вообще не надо, такой задачи пока не было :-) , просто "за державу (клюшки) обидно" :-)

Еще раз напоминаю про als на 1cpp по свежее, поделитесь если у кого то есть...
Название: Re: Сохранение картинки со штрихкодом
Отправлено: Djelf от 02 декабря 2024, 15:17
Ерунда все это! Печально что Система.ПолучитьOLEКартинку записывать не может, но это тоже простительно, встроенный конвертер графики в 1с++ это было бы очень тяжело... Неподъемно ;)
Название: Re: Сохранение картинки со штрихкодом
Отправлено: Djelf от 02 декабря 2024, 15:24
У меня такая сборка als: https://cloud.mail.ru/public/WvQm/7aGstiVi3
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 15:30
Ооо!!!
То, что надо, спасибо огромное!
И как я без этого раньше жил, столько всего есть, что через жо... приходилось делать :-)
Название: Re: Сохранение картинки со штрихкодом
Отправлено: MWW_Ruza от 02 декабря 2024, 16:11
Да, конечно лучше чем у меня, но все равно, как я понимаю, по 1cpp als не полный...
Вот, как-то на инфостарте в одной из моих тем отвечали:

"(10) Мы используем объект из 1cpp для определения статуса Ctrl Alt Shift:

// Процедура заполняет признак состояния доп клавиш (Ctrl,Shift,Alt) в глобальные переменные
Процедура глСтатусКлавиши() Экспорт
Перем Клавиатура;
Попытка
Клавиатура=СоздатьОбъект("1cpp.Клавиатура");"

Да, это работает на моей версии 1cpp, т.е. - метод поддерживается.
Но, ни в одном als про него и упоминания нет...
В твоем наборе als "Клавиатура" есть только в "Табличном документе от trad"...
Но, это не то.
Наверняка есть еще что-то, что не описано.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: ADirks от 04 декабря 2024, 07:06
Самая полная документация по 1cpp есть в исходниках (rst) и в chm.
CHM брать здесь: https://www.1cpp.ru/forum/YaBB.pl?num=1303385763
Название: Re: Сохранение картинки со штрихкодом
Отправлено: alyuev от 04 декабря 2024, 13:34
Вот, что у меня нашлось.
Название: Re: Сохранение картинки со штрихкодом
Отправлено: smitti911 от 04 декабря 2024, 15:10
Добавлю еще алс-ку