Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   Как создать BMP файл из командной строки. Как работать с графикой из командной строки (http://forum.oszone.net/showthread.php?t=312951)

MKN 21-03-2016 15:42 2618289

Как создать BMP файл из командной строки. Как работать с графикой из командной строки
 
Подскажите пожалуйста консольную утилитку для создания bmp файлов (можно др. графических форматов) из командной строки.
Т.е. в команде присутствуют размер, битность , цвет и т.д.

Charg 21-03-2016 16:04 2618292

А содержимое ты как из командной строки нарисуешь?

MKN 21-03-2016 16:10 2618294

Цитата:

Цитата Charg
А содержимое ты как из командной строки нарисуешь? »

Содержимым будет обыкновенная цветная заливка. Т.е. создастся простой цветной квдратик или прямоугольник.
К примеру так делает функция CreateBitmap и похожие.

NickM 21-03-2016 17:45 2618319

MKN, imagemagick не смотрели?

Iska 21-03-2016 19:39 2618357

Присоединюсь к рекомендации коллеги NickM.

MKN 22-03-2016 08:01 2618501

Цитата:

Цитата NickM
imagemagick не смотрели? »

Первым делом... Т.к. другого инструментария похоже в природе нет... Но продукт этот оч громоздский и мутный...
Моя задача "на 10 килобайт" раздута в нём до неимоверных размеров и требует времени для изучения...

NickM 22-03-2016 08:28 2618506

Цитата:

Цитата MKN
Т.к. другого инструментария похоже в природе нет... »

тогда следует заморчочиться с *.vbs скриптом, в котором создавать объект canvas или image с требуемыми характеристиками(размер, заливка, фигура и пр.), а после сохранять в файл методом SaveTofile

Iska 22-03-2016 08:35 2618507

Цитата:

Цитата MKN
Но продукт этот оч громоздский и мутный...
Моя задача "на 10 килобайт" раздута в нём до неимоверных размеров и требует времени для изучения... »

MKN, если детально опишете задачу/задачи — попробуем подсказать готовый код.

Цитата:

Цитата NickM
тогда следует заморчочиться с *.vbs скриптом, в котором создавать объект canvas или image с требуемыми характеристиками(размер, заливка, фигура и пр.), а после сохранять в файл методом SaveTofile »

И снова поддержу. Тут, правда, куда меньше возможностей: vbscript: работа с графическими файлами — Windows Script Host, HTA (VBScript, JScript) — Коллекция скриптов и идей — Серый форум.

MKN, ещё вспомнил — IrfanView вроде как умеет что-то делать из командной строки (сам не пробовал).

MKN 22-03-2016 09:54 2618529

Цитата:

Цитата Iska
если детально опишете задачу »

Задача проста. Для наглядности, типа :
CreateBMP.exe -путь\имя.bmp -размер100,80 -HEX-цвет -24bit

Цитата:

Цитата Iska
IrfanView вроде как умеет »

Да. Отличный инструмент для ряда задач. Но создавать файлы не умеет... (в доках такого не нашёл...)

CyberDaemon 22-03-2016 17:32 2618743

Цитата:

Цитата MKN
Но создавать файлы не умеет... »

Из меню умеет. "Изображение -> Создать новое (пустое) изображение... Snift+N", потом "сохранить как"
Может и из командной строки тоже сможет.

Charg 22-03-2016 17:36 2618744

Цитата:

Цитата CyberDaemon
Из меню умеет. "Изображение -> Создать новое (пустое) изображение... Snift+N", потом "сохранить как" »

Цитата:

Как создать BMP файл из командной строки

CyberDaemon 22-03-2016 17:37 2618745

Charg, угу, я дополнил мысль. Раз может из меню - может и из командной тоже можно.

MKN 22-03-2016 17:46 2618747

Придётся использовать ImageMagick... Инструмент конечно мощнейший. Из командной строки чудеса творит. Но размер... Тот же основной convert.exe - аж 12 метров...
И попутно вопрос по ImageMagick, может кто знает... :
Каким образом использовать одновременно ключи -append и -border ? Т.е. когда делается последовательность из изображений, но рамку надо сделать, скажем, только на втором изображении, остальные не трогаем ?

Iska 23-03-2016 08:05 2618931

Цитата:

Цитата MKN
Задача проста. Для наглядности, типа :
CreateBMP.exe -путь\имя.bmp -размер100,80 -HEX-цвет -24bit »

MKN, как-то так:
Код:

convert.exe -size 100x80 xc:"#aaddff" -type truecolor "C:\Temp\Sample.bmp"
Цитата:

Цитата MKN
И попутно вопрос по ImageMagick, может кто знает... :
Каким образом использовать одновременно ключи -append и -border ? Т.е. когда делается последовательность из изображений, но рамку надо сделать, скажем, только на втором изображении, остальные не трогаем ? »

Ох, не всю задачу Вы озвучили ;).

MKN 23-03-2016 08:14 2618934

Цитата:

Цитата Iska
как-то так: »

С convert.exe было всё понятно, но слишком объёмно. Потому и не хотелось бы связываться. Уверен, что моя задача решается десятком-другим килобайт...
Но, т.к. решения нет, то пришлось связаться с ImageMagick. А раз уж связался , то и задачи стали теперь иные. :)
И по этим задачам сразу возникли вопросы (ессно после изучения доков в пределах моих возможностей)

Iska 23-03-2016 08:21 2618936

Цитата:

Цитата MKN
С convert.exe было всё понятно, но слишком объёмно. Потому и не хотелось бы связываться. »

Не столько объёмно, сколь не всегда логично (это я по памяти сужу).

Цитата:

Цитата MKN
Уверен, что моя задача решается десятком-других килобайт... »

Хех. Это я Вам ещё Adobe Photoshop не предлагал :). Там и возможностей побольше, и логика куда более понятна. Да и решается всё в рамках нормального объектного подхода (а в ImageMagic объект Automation решает по сути одну задачу — тупо передать ровно ту же самую командную строку :lol:).

Цитата:

Цитата MKN
А раз уж связался , то и задачи стали теперь иные.
И по этим задачам сразу возникли вопросы (ессно после изучения доков в пределах моих возможностей) »

Если есть желание — расписывайте, будем «ковырять» вместе.

MKN 23-03-2016 08:29 2618938

Цитата:

Цитата Iska
Не столько объёмно, сколь не всегда логично »

О какой логике речь ? :) В моём случае предполагалось очень даже логично. В коде программки размером менее сотни килобайт надо было генерировать кучу BMP файлов для "внутреннего" использования. Согласен был бы и на включение внешней утилитки для этих целей. Но утилитки, а не утилитище размером более 12 метров :)
Теперь концепция вынужденно поменялась...
Цитата:

Цитата Iska
Если есть желание — расписывайте, будем «ковырять» вместе. »

Желание у меня есть, но взваливать на других обузу "ковыряния" в мало кому интересном, кроме меня вопросе, как то не ловко... :)

Iska 23-03-2016 09:31 2618955

Цитата:

Цитата MKN
О какой логике речь ? »

О параметрах утилиты. Не всегда они выглядят логично, особенно в комплекте, когда решаешь ту или иную задачу.

MKN 23-03-2016 09:36 2618959

Цитата:

Цитата Iska
О параметрах утилиты. Не всегда они выглядят логично »

Есть такое дело... :) Я чуть позже покажу скрины и команду, где вроде бы действую по логике, но результат совсем не тот...

Charg 23-03-2016 10:07 2618972

Цитата:

Цитата MKN
Уверен, что моя задача решается десятком-другим килобайт... »

Решается десятком-сотней самописных килобайт. Те решения, которые в интернете расчитаны на массового пользователя, вполне логично облеплены горой других функций, которые не нужны конкретно для этой задачи, но возможно нужны другим юзерам.
Можно конечно облазить stackoverflow на предмет наличия готового кода и отталкиваться именно от него, раз уж хочется "компактного" решения.

MKN 23-03-2016 10:24 2618981

Цитата:

Цитата Charg
самописных килобайт »

Согласен, но...
Цитата:

Цитата Charg
Те решения, которые в интернете расчитаны на массового пользователя »

в то же время в сети имеется тьма готовых решений(утилит, приложений), которые вызывают недоумение своим существованием... :)
К примеру, в сети море утилит, отображающих тип и версию ОС (это пара строк самописного кода, это наличие инфы в самой ОС, которую любой пользователь может посмотреть явно без помощи сторонних утилит...) И т.п. и т.д.
Почему бы не быть утилите исключительно для создания bmp(или ещё каких) граф файлов. (Есть же тьма утилит создания-конвертирования-экстракта для PDF, но по сути своей не имеющих большого смысла... :) )

MKN 23-03-2016 10:40 2618992

Мой вопрос-задача : Как в ImageMagick, сделать одной командой, рамку только в одном из совмещённых последовательно, изображений ?

Сначала отдельные операции, успешно решаемые :

создадим простой 32 битный png файл красного цвета размером 48x24
Код:

convert -size 48x24 xc:"#FF0000"  -define png:format=png32 -format png Test1.png


сделаем для этого файла рамку белого цвета толщиной 2 пиксела (кстати интересно, как вогнать эту рамку внутрь прямоугольника , а не поверх (не изменяя исходный размер !) ?
( Это для того, чтобы сохранить выходной размер равным 48x24 , т.е. не учитывать толщину рамки)
Код:

convert -size 48x24 xc:"#FF0000"  -border 2 -bordercolor "#FFFFFF" -define png:format=png32 -format png Test2.png


на черном фоне лучше видно :


сделаем результирующий файл из последовательности трёх изображений разных цветов (без рамки) :

Код:

convert -size 48x24 xc:"#FF0000"  xc:"#0000FF" xc:"#C0C0C0" -append -define png:format=png32 -format png Test3.png


И, наконец, попробуем сделать файл из последовательности трёх изображений, в котором присутствует рамка на втором изображении :
Код:

convert -size 48x24 xc:"#FF0000"  xc:"#0000FF" -border 2 -bordercolor "#FFFFFF" xc:"#C0C0C0" -append -define png:format=png32 -format png Test4.png
В результате - черт те что :





Как это "черт те что" победить одной командой ? Или одной командой так не сделать ?

Charg 23-03-2016 11:03 2619003

Цитата:

К примеру, в сети море утилит, отображающих тип и версию ОС (это пара строк самописного кода, это наличие инфы в самой ОС, которую любой пользователь может посмотреть явно без помощи сторонних утилит...) И т.п. и т.д.
Почему бы не быть утилите исключительно для создания bmp(или ещё каких) граф файлов.
Наверное потому что рядовая домохозяйка не знает что существует хоткей win+pause (и вообще о существовании таких кнопок на клавиатуре), а вопрос "какая у меня операционная система" гуглится очень часто, повышеный спрос и рождает предложение. С другой стороны, создание *.bmp файлов - задача узкоспециализированная, так сказать, не думаю что на неё есть хоть какой-нибудь спрос. Вот и специализированных решений мало (или вообще нет).

Так же можешь попробовать поискать решения из двух шагов - одна утилита генерирует графику в файл, вторая конвертирует в bmp.


Время: 07:52.

Время: 07:52.
© OSzone.net 2001-