Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: Peter, DEMBEL  
Плагин faSnapShot
mishemДата: Пт, 04 Августа 2023, 20:50 | Сообщение # 31
Эксперт форума
Цитата frolandr ()
На основе твоей подсказки сделал.

Ну, видишь как хорошо получилось. И трекбар в дело пошел и переменную можно использовать. :)

Добавлено (04 Августа 2023, 21:45)
---------------------------------------------

Цитата frolandr ()
если все хорошо перенесу ссылку в первую тему.


Где трек бар, может лучше написать "ниже" и "выше", или вообще надписи убрать? А то я как то сижу и жду когда надпись высокое на низеое изменится при маленьком значении, а она все высокое и высокое. :)

Переменная если введена без скобок, так без скобок и остается. Ох и наобжигался я на этом когда только начинал. Ни как в толк не мог взять, все правильно, а не работает.

А значение только цифры, или буквы тоже можно вводить? :)

Это с наскока.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата frolandr ()
На основе твоей подсказки сделал.

Ну, видишь как хорошо получилось. И трекбар в дело пошел и переменную можно использовать. :)

Добавлено (04 Августа 2023, 21:45)
---------------------------------------------

Цитата frolandr ()
если все хорошо перенесу ссылку в первую тему.


Где трек бар, может лучше написать "ниже" и "выше", или вообще надписи убрать? А то я как то сижу и жду когда надпись высокое на низеое изменится при маленьком значении, а она все высокое и высокое. :)

Переменная если введена без скобок, так без скобок и остается. Ох и наобжигался я на этом когда только начинал. Ни как в толк не мог взять, все правильно, а не работает.

А значение только цифры, или буквы тоже можно вводить? :)

Это с наскока.

Автор - mishem
Дата добавления - 04 Августа 2023 в 20:50
frolandrДата: Ср, 09 Августа 2023, 01:05 | Сообщение # 32
Участник
Добавил несколько команд для сохранения скриншотов в Clipboard и получения изображения из него с сохранением в файлы. Можно просто сделать скриншот кнопкой PrintScreen на клавиатуре, а плагином получить это изображение из буфера и сохранить в файл, или обработать каким-то другим плагином. Может кому понадобятся эти команды.

Цитата mishem ()
Где трек бар, может лучше написать "ниже" и "выше", или вообще надписи убрать? А то я как то сижу и жду когда надпись высокое на низеое изменится при маленьком значении, а она все высокое и высокое.

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

Цитата mishem ()
Переменная если введена без скобок, так без скобок и остается. Ох и наобжигался я на этом когда только начинал. Ни как в толк не мог взять, все правильно, а не работает.

А как должно быть? Что ввел так и сохраняется. Поясни подробнее... Посмотрел несколько плагинов - не понял, а вот посмотрел встроенные команды работы со строками, то понял. Если ввести вместо переменной просто текст, то добавляются квадратные скобки, другое дело, что и кириллические символы в скобки заключаются и даже числа, а это уже будет ошибкой.

Цитата mishem ()
А значение только цифры, или буквы тоже можно вводить?

Можно вводить и буквы. Сначала была проверка и в переменную ошибки выводилась информация, а скриншот не создавался. Затем Андрей, тот который AS3856 написал, что если введена не цифра, то все же лучше делать скриншот, но качество сохранение ставить в 100. Ну а сообщение, которое выводилось в переменную ошибки теперь выводится в переменную предупреждения faWarnings.


Сообщение отредактировано
frolandr - Ср, 09 Августа 2023, 23:13
 
СообщениеДобавил несколько команд для сохранения скриншотов в Clipboard и получения изображения из него с сохранением в файлы. Можно просто сделать скриншот кнопкой PrintScreen на клавиатуре, а плагином получить это изображение из буфера и сохранить в файл, или обработать каким-то другим плагином. Может кому понадобятся эти команды.

Цитата mishem ()
Где трек бар, может лучше написать "ниже" и "выше", или вообще надписи убрать? А то я как то сижу и жду когда надпись высокое на низеое изменится при маленьком значении, а она все высокое и высокое.

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

Цитата mishem ()
Переменная если введена без скобок, так без скобок и остается. Ох и наобжигался я на этом когда только начинал. Ни как в толк не мог взять, все правильно, а не работает.

А как должно быть? Что ввел так и сохраняется. Поясни подробнее... Посмотрел несколько плагинов - не понял, а вот посмотрел встроенные команды работы со строками, то понял. Если ввести вместо переменной просто текст, то добавляются квадратные скобки, другое дело, что и кириллические символы в скобки заключаются и даже числа, а это уже будет ошибкой.

Цитата mishem ()
А значение только цифры, или буквы тоже можно вводить?

Можно вводить и буквы. Сначала была проверка и в переменную ошибки выводилась информация, а скриншот не создавался. Затем Андрей, тот который AS3856 написал, что если введена не цифра, то все же лучше делать скриншот, но качество сохранение ставить в 100. Ну а сообщение, которое выводилось в переменную ошибки теперь выводится в переменную предупреждения faWarnings.

Автор - frolandr
Дата добавления - 09 Августа 2023 в 01:05
mishemДата: Ср, 09 Августа 2023, 09:01 | Сообщение # 33
Эксперт форума
Цитата frolandr ()
другое дело, что и кириллические символы в скобки заключаются и даже числа, а это уже будет ошибкой.

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

Например: "Сохранить значение в переменной:" Здесь в любом случае должна быть переменная. НБ принимает в любом виде названия переменных, и в кирилице, и в латинице и в цифрах.

В твоем случае "Указать переменную:", значит тоже, здесь не может быть какого нибудь значения, только имя переменной. Скобки не критично, но для новых, не опытных пользователей удобно и остерегает от не предвиденных синтаксических ошибок. А это на первых "парах" самые распрастраненные ошибки и встречаются на много чаще чем логические. И ищутся на много сложнее. Vаriable <> Variale. В первом слове первая "а" кириллицей. ;) Можешь в блокноте проверить. Найдет только одно какое нибудь слово. :)

Цитата frolandr ()
Можно вводить и буквы. Сначала была проверка и в переменную ошибки выводилась информация, а скриншот не создавался.

Вообще то эта проверка должна происходить на стадии проектирования. Т.е. когда проект запускается. Если выбран трекбар и указаны не цифры, сообщение о том, что в написании команды допущена ошибка. Типа как когда прямоугольник например не указан.

Цитата frolandr ()
то все же лучше делать скриншот, но качество сохранение ставить в 100.

Здесь соглашусь. Вообще, на мой взгляд, везде должны быть на случай не предвиденной ошибки значения по умолчанию. Ошибка ошибкой, но программа должна все равно отработать. Т.е. конечный результат должен быть в любом случае.

Имхо, плагины предназначены для облегчения программирования. Т.е. вся программа рассчитана на пользователей, которые понятия не имеют как программировать но хотят сделать свою программу. Если на первых "парах" у них все получается, то интерес становится с каждым разом больше. А значит и опыта больше. Если с первого проекта начинают "сыпаться" ошибки, то и интерес пропадает. В самой НБ это организовано на высшем уровне, в плагинах люди упускают этот момент. Возможно просто забывают, как они сами начинали. :)

На мой взгляд, когда сомневаешься как правильно сделать, самое простое подсмотреть в НБ или плагинах NeoBookDBPro и NeoBookFMFTP. И все вопосы отпадают сами собой. :)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата frolandr ()
другое дело, что и кириллические символы в скобки заключаются и даже числа, а это уже будет ошибкой.

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

Например: "Сохранить значение в переменной:" Здесь в любом случае должна быть переменная. НБ принимает в любом виде названия переменных, и в кирилице, и в латинице и в цифрах.

В твоем случае "Указать переменную:", значит тоже, здесь не может быть какого нибудь значения, только имя переменной. Скобки не критично, но для новых, не опытных пользователей удобно и остерегает от не предвиденных синтаксических ошибок. А это на первых "парах" самые распрастраненные ошибки и встречаются на много чаще чем логические. И ищутся на много сложнее. Vаriable <> Variale. В первом слове первая "а" кириллицей. ;) Можешь в блокноте проверить. Найдет только одно какое нибудь слово. :)

Цитата frolandr ()
Можно вводить и буквы. Сначала была проверка и в переменную ошибки выводилась информация, а скриншот не создавался.

Вообще то эта проверка должна происходить на стадии проектирования. Т.е. когда проект запускается. Если выбран трекбар и указаны не цифры, сообщение о том, что в написании команды допущена ошибка. Типа как когда прямоугольник например не указан.

Цитата frolandr ()
то все же лучше делать скриншот, но качество сохранение ставить в 100.

Здесь соглашусь. Вообще, на мой взгляд, везде должны быть на случай не предвиденной ошибки значения по умолчанию. Ошибка ошибкой, но программа должна все равно отработать. Т.е. конечный результат должен быть в любом случае.

Имхо, плагины предназначены для облегчения программирования. Т.е. вся программа рассчитана на пользователей, которые понятия не имеют как программировать но хотят сделать свою программу. Если на первых "парах" у них все получается, то интерес становится с каждым разом больше. А значит и опыта больше. Если с первого проекта начинают "сыпаться" ошибки, то и интерес пропадает. В самой НБ это организовано на высшем уровне, в плагинах люди упускают этот момент. Возможно просто забывают, как они сами начинали. :)

На мой взгляд, когда сомневаешься как правильно сделать, самое простое подсмотреть в НБ или плагинах NeoBookDBPro и NeoBookFMFTP. И все вопосы отпадают сами собой. :)

Автор - mishem
Дата добавления - 09 Августа 2023 в 09:01
frolandrДата: Ср, 09 Августа 2023, 22:53 | Сообщение # 34
Участник
Изменил тексты по сторонам трекбара и добавил присоединение скобок для переменной.

Цитата mishem ()
Переменная если введена без скобок, так без скобок и остается. Ох и наобжигался я на этом когда только начинал. Ни как в толк не мог взять, все правильно, а не работает.

Я обычно сначала две скобки ставлю [] затем уже между них имя переменной пишу :) . Ошибку можно допустить где угодно. Сейчас в плагине, как и во встроенных командах NEO добавляются скобки, они добавляются и на число [12345] и здесь можно допустить ошибку.

Цитата mishem ()
Вообще то эта проверка должна происходить на стадии проектирования.

Соглашусь, часть введенных данных можно проверить, но содержимое переменной нельзя проверить на этой стадии, только при тестировании. К примеру, в окне помощнике ввел программист определенные данные и нажал кнопку Ок. В ответ получил подчеркивание полей красным цветом, где введены не те данные. Если данные введены не переменной, то можно проверить и на тип данных и путь к файлу и существование чего-то. Другое дело, что не кто не запретит программисту вводить или изменить данные без окна помощника, прямо в созданной команде. Тогда уже проверка только после запуска проекта.

Цитата mishem ()
Имхо, плагины предназначены для облегчения программирования.

Наверное правильнее сказать, что плагины предназначены для расширения функциональных возможностей NEO.
Сужу по себе конечно, когда начинал, то плагинами не пользовался, команд НЕО было достаточно, чтобы решать большинство потребностей. Когда нужно было что-то особенное начал смотреть в сторону плагинов, но в 2008-2009 годах их были единицы и как обычно то, что было нужно, то было платно. По этому и приходилось писать кое-какие плаги для себя.


Сообщение отредактировано
frolandr - Ср, 09 Августа 2023, 22:58
 
СообщениеИзменил тексты по сторонам трекбара и добавил присоединение скобок для переменной.

Цитата mishem ()
Переменная если введена без скобок, так без скобок и остается. Ох и наобжигался я на этом когда только начинал. Ни как в толк не мог взять, все правильно, а не работает.

Я обычно сначала две скобки ставлю [] затем уже между них имя переменной пишу :) . Ошибку можно допустить где угодно. Сейчас в плагине, как и во встроенных командах NEO добавляются скобки, они добавляются и на число [12345] и здесь можно допустить ошибку.

Цитата mishem ()
Вообще то эта проверка должна происходить на стадии проектирования.

Соглашусь, часть введенных данных можно проверить, но содержимое переменной нельзя проверить на этой стадии, только при тестировании. К примеру, в окне помощнике ввел программист определенные данные и нажал кнопку Ок. В ответ получил подчеркивание полей красным цветом, где введены не те данные. Если данные введены не переменной, то можно проверить и на тип данных и путь к файлу и существование чего-то. Другое дело, что не кто не запретит программисту вводить или изменить данные без окна помощника, прямо в созданной команде. Тогда уже проверка только после запуска проекта.

Цитата mishem ()
Имхо, плагины предназначены для облегчения программирования.

Наверное правильнее сказать, что плагины предназначены для расширения функциональных возможностей NEO.
Сужу по себе конечно, когда начинал, то плагинами не пользовался, команд НЕО было достаточно, чтобы решать большинство потребностей. Когда нужно было что-то особенное начал смотреть в сторону плагинов, но в 2008-2009 годах их были единицы и как обычно то, что было нужно, то было платно. По этому и приходилось писать кое-какие плаги для себя.

Автор - frolandr
Дата добавления - 09 Августа 2023 в 22:53
mishemДата: Ср, 09 Августа 2023, 23:48 | Сообщение # 35
Эксперт форума
Цитата frolandr ()
но содержимое переменной нельзя проверить на этой стадии, только при тестировании

А тебе и не надо проверять содержимое, об этом уже должен думать тот, кто будет писать свою программу, там он уже должен учесть, что пользователь может поместить в переменную.

Цитата frolandr ()
когда начинал, то плагинами не пользовался

Обычно наоборот, когда начинают, ищут плагин, что бы сделал одной командой всю намеченную работу.
Минимум кода, максимум возможностей.
А вот со временем, когда понимают и могут читать код, начинают делать средствами НБ. И то не всегда. :)

Цитата frolandr ()
Сужу по себе

Ты то, на сколько я понял, уже имел представление о программировании. А я когда начинал, вообще ничего не смыслил. Для меня "Привет мир", было грандиозное достижение. ;)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата frolandr ()
но содержимое переменной нельзя проверить на этой стадии, только при тестировании

А тебе и не надо проверять содержимое, об этом уже должен думать тот, кто будет писать свою программу, там он уже должен учесть, что пользователь может поместить в переменную.

Цитата frolandr ()
когда начинал, то плагинами не пользовался

Обычно наоборот, когда начинают, ищут плагин, что бы сделал одной командой всю намеченную работу.
Минимум кода, максимум возможностей.
А вот со временем, когда понимают и могут читать код, начинают делать средствами НБ. И то не всегда. :)

Цитата frolandr ()
Сужу по себе

Ты то, на сколько я понял, уже имел представление о программировании. А я когда начинал, вообще ничего не смыслил. Для меня "Привет мир", было грандиозное достижение. ;)

Автор - mishem
Дата добавления - 09 Августа 2023 в 23:48
frolandrДата: Вт, 12 Сентября 2023, 22:43 | Сообщение # 36
Участник
Обновил плагин до версии 1.6. Для упрощения и удобства сделал так, что при создании снимка можно сразу выбрать формат изображения с сохранением в файл с расширением соответствующего формата. Создание снимка экрана или окна программы в Clipboard объединил в одну команду. Показать / скрыть панель также объединил в одну. В результате количество команд сократилось c двадцати до восьми. Ссылка на плагин и демку.
 
СообщениеОбновил плагин до версии 1.6. Для упрощения и удобства сделал так, что при создании снимка можно сразу выбрать формат изображения с сохранением в файл с расширением соответствующего формата. Создание снимка экрана или окна программы в Clipboard объединил в одну команду. Показать / скрыть панель также объединил в одну. В результате количество команд сократилось c двадцати до восьми. Ссылка на плагин и демку.

Автор - frolandr
Дата добавления - 12 Сентября 2023 в 22:43
ВадимДата: Ср, 13 Сентября 2023, 14:29 | Сообщение # 37
Генератор идей
Супер! Спасибо, Андрей!!! thumbs_up

Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
СообщениеСупер! Спасибо, Андрей!!! thumbs_up

Автор - Вадим
Дата добавления - 13 Сентября 2023 в 14:29
mishemДата: Чт, 14 Сентября 2023, 22:35 | Сообщение # 38
Эксперт форума
Цитата frolandr ()
В результате количество команд сократилось c двадцати до восьми.

Вот это правильный подход. thumbs_up


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата frolandr ()
В результате количество команд сократилось c двадцати до восьми.

Вот это правильный подход. thumbs_up

Автор - mishem
Дата добавления - 14 Сентября 2023 в 22:35
mishemДата: Вт, 15 Октября 2024, 21:37 | Сообщение # 39
Эксперт форума
frolandr, тут на оффоруме вопрос задали, полез искать твой плагин. Наткнулся на команду faClipboardToFile .
Решил проверить, так как бился дня три с консольками NConvert и ImageMagick. Думал утебя может нормально работает. Увы, та же проблема.

При копировании в буфер теряется альфа канал.

Что бы понять о чем я, зайди к примеру на этот сайт, или какой нибудь другой, где есть прозрачные картинки (значки, иконки). На изображение правой кнопкои и выбери Копировать картинку.

Примени команду плагина faClipboardToFile и увидишь проблему.

Долна быть:


А получается:


Я нашел выход с помощью консольки ClipboardToPNG.

Цитата
Это небольшая вспомогательная утилита для исправления моей досадной проблемы с Photoshop на Windows — тот факт, что он не обрабатывает прозрачность.

Она сохраняет изображение как файл .png (расположенный в %TEMP%\clip.png) и возвращает 0, если это удалось, и 1, если нет.

Используя это, вы можете, например, перехватывать нажатия Ctrl+V, когда Photoshop открыт, а затем, если ClipboardToPNG вернул 0, запустить действие Photoshop, которое вставит временный файл, в противном случае выполнить стандартную вставку.


Плагин Дембеля dmCMDLine не возвращает ничего, ни 0, ни 1. Но проверять можно папку темп на существование файла clip.png.

Так что если будет время, покопайся... Может исправишь?

Не плохо было бы еще добавить получение информации об изображении. Размеры, битность, DPI, количество цвета ...

Смотрел Андрея плагин asPicture3. У него с прозрачностью все замечательно, но есть другие проблемы. :( Но об этом уже в другой теме...
Прикрепления: 5523444.png (1.3 Kb) · 7979229.png (2.3 Kb)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщениеfrolandr, тут на оффоруме вопрос задали, полез искать твой плагин. Наткнулся на команду faClipboardToFile .
Решил проверить, так как бился дня три с консольками NConvert и ImageMagick. Думал утебя может нормально работает. Увы, та же проблема.

При копировании в буфер теряется альфа канал.

Что бы понять о чем я, зайди к примеру на этот сайт, или какой нибудь другой, где есть прозрачные картинки (значки, иконки). На изображение правой кнопкои и выбери Копировать картинку.

Примени команду плагина faClipboardToFile и увидишь проблему.

Долна быть:


А получается:


Я нашел выход с помощью консольки ClipboardToPNG.

Цитата
Это небольшая вспомогательная утилита для исправления моей досадной проблемы с Photoshop на Windows — тот факт, что он не обрабатывает прозрачность.

Она сохраняет изображение как файл .png (расположенный в %TEMP%\clip.png) и возвращает 0, если это удалось, и 1, если нет.

Используя это, вы можете, например, перехватывать нажатия Ctrl+V, когда Photoshop открыт, а затем, если ClipboardToPNG вернул 0, запустить действие Photoshop, которое вставит временный файл, в противном случае выполнить стандартную вставку.


Плагин Дембеля dmCMDLine не возвращает ничего, ни 0, ни 1. Но проверять можно папку темп на существование файла clip.png.

Так что если будет время, покопайся... Может исправишь?

Не плохо было бы еще добавить получение информации об изображении. Размеры, битность, DPI, количество цвета ...

Смотрел Андрея плагин asPicture3. У него с прозрачностью все замечательно, но есть другие проблемы. :( Но об этом уже в другой теме...

Автор - mishem
Дата добавления - 15 Октября 2024 в 21:37
frolandrДата: Чт, 24 Октября 2024, 19:24 | Сообщение # 40
Участник
Приветствую! Пытался отправить в личку, но не понял получилось или нет. Вот ссылка на не упакованный плагин: https://disk.yandex.ru/d/xNw0urmawuIYcQ
Дописал пару строк, у меня появилась прозрачность.
 
СообщениеПриветствую! Пытался отправить в личку, но не понял получилось или нет. Вот ссылка на не упакованный плагин: https://disk.yandex.ru/d/xNw0urmawuIYcQ
Дописал пару строк, у меня появилась прозрачность.

Автор - frolandr
Дата добавления - 24 Октября 2024 в 19:24
mishemДата: Пт, 01 Ноября 2024, 00:15 | Сообщение # 41
Эксперт форума
Цитата frolandr ()
у меня появилась прозрачность.

И да и нет. :(

Попробуй вставить в объект Рисунок с такими параметрами.


И скачай этот рисунок и попробуй открыть его.


Если из буфера твоим плагином, будет черный фон. Я пробовал с того же сайта копировать что выше давал. Сохраняет с прозрачным фоном, а в объекте рисунок, если не устанавливать прозрачность, откроется с черным.

Этот же рисунок что ниже открывается прозрачный. ;)

Есть какие то тонкости мне не известные. :)
А нужно что бы с такими параметрами открывался прозразрачный.

Сейчас попробовал в фотошопе. Тоже черный фон при открытии.



Прикрепления: 1053784.png (24.6 Kb) · 0876658.png (1.8 Kb) · 6727118.png (5.1 Kb) · 4413562.png (6.0 Kb)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата frolandr ()
у меня появилась прозрачность.

И да и нет. :(

Попробуй вставить в объект Рисунок с такими параметрами.


И скачай этот рисунок и попробуй открыть его.


Если из буфера твоим плагином, будет черный фон. Я пробовал с того же сайта копировать что выше давал. Сохраняет с прозрачным фоном, а в объекте рисунок, если не устанавливать прозрачность, откроется с черным.

Этот же рисунок что ниже открывается прозрачный. ;)

Есть какие то тонкости мне не известные. :)
А нужно что бы с такими параметрами открывался прозразрачный.

Сейчас попробовал в фотошопе. Тоже черный фон при открытии.




Автор - mishem
Дата добавления - 01 Ноября 2024 в 00:15
frolandrДата: Вс, 03 Ноября 2024, 16:00 | Сообщение # 42
Участник
Да, есть такое. Программы просмотра изображений в частности IrfanView отображают изображение прозрачным, а Фотошоп и Необук на черном фоне.
В посте выше написал, что добавил пару строк, но посмотрел плагин, а оказывается одну строку пропустил, дописал, но результат не поменялся. Пробовал еще варианты. Дело в том, что в прозрачность в PNG файле задает первый пиксел, но прозрачность можно получить и указав какой именно цвет сделать прозрачным. Так вот принудительно указал прозрачный цвет - черным, но результат прежний.
Попробовал на прямую, т.е. скопировал файл в буфер и сразу открыл его в Фотошоп, так вот тот же черный фон. Получается в плагине вроде как и нет ошибки, так как фотошоп сам из буфера обмена делает черный фон.

Пишу в c++builder, прозрачность делал так:
bmp->Transparent=true;
bmp->TransparentMode=tmAuto;

Принудительно делал так:
bmp->TransparentMode = tmFixed; //фиксированное значение цвета
bmp->TransparentColor = clBlack; //черный цвет в прозрачный

Скопировал то изображение, которое у тебя прозрачное, у меня все равно оно в Фотошоп с черным фоном.
Прикрепления: 3215035.jpg (51.9 Kb)


Сообщение отредактировано
frolandr - Вс, 03 Ноября 2024, 16:14
 
СообщениеДа, есть такое. Программы просмотра изображений в частности IrfanView отображают изображение прозрачным, а Фотошоп и Необук на черном фоне.
В посте выше написал, что добавил пару строк, но посмотрел плагин, а оказывается одну строку пропустил, дописал, но результат не поменялся. Пробовал еще варианты. Дело в том, что в прозрачность в PNG файле задает первый пиксел, но прозрачность можно получить и указав какой именно цвет сделать прозрачным. Так вот принудительно указал прозрачный цвет - черным, но результат прежний.
Попробовал на прямую, т.е. скопировал файл в буфер и сразу открыл его в Фотошоп, так вот тот же черный фон. Получается в плагине вроде как и нет ошибки, так как фотошоп сам из буфера обмена делает черный фон.

Пишу в c++builder, прозрачность делал так:
bmp->Transparent=true;
bmp->TransparentMode=tmAuto;

Принудительно делал так:
bmp->TransparentMode = tmFixed; //фиксированное значение цвета
bmp->TransparentColor = clBlack; //черный цвет в прозрачный

Скопировал то изображение, которое у тебя прозрачное, у меня все равно оно в Фотошоп с черным фоном.

Автор - frolandr
Дата добавления - 03 Ноября 2024 в 16:00
frolandrДата: Вс, 03 Ноября 2024, 18:52 | Сообщение # 43
Участник
Поискал по форумам, нашел такой ответ:
---
Браузер копирует изображение в буфер обмена в формате 24bpp.
Что превращает прозрачность в черноту.
Вы можете получить формат 32bpp из буфера обмена, но для этого требуется обработка формата DIB.
Для этого в системе нет встроенной поддержки.
---

Что интересно, если посмотреть обычными средствами, то они показывают, что файл 32bpp, но если смотреть графической программой, то файл 24bpp, файл изображения загрузил.

Думаю в этом проблема, к сожалению конвертировать с налета 24->32 не получилось, нужно искать решение, к сожалению пока нет времени.
Прикрепления: 6632943.jpg (93.1 Kb)


Сообщение отредактировано
frolandr - Вс, 03 Ноября 2024, 18:57
 
СообщениеПоискал по форумам, нашел такой ответ:
---
Браузер копирует изображение в буфер обмена в формате 24bpp.
Что превращает прозрачность в черноту.
Вы можете получить формат 32bpp из буфера обмена, но для этого требуется обработка формата DIB.
Для этого в системе нет встроенной поддержки.
---

Что интересно, если посмотреть обычными средствами, то они показывают, что файл 32bpp, но если смотреть графической программой, то файл 24bpp, файл изображения загрузил.

Думаю в этом проблема, к сожалению конвертировать с налета 24->32 не получилось, нужно искать решение, к сожалению пока нет времени.

Автор - frolandr
Дата добавления - 03 Ноября 2024 в 18:52
mishemДата: Пн, 04 Ноября 2024, 10:45 | Сообщение # 44
Эксперт форума
Цитата frolandr ()
нужно искать решение, к сожалению пока нет времени.

Посмотри здесь в исходнике. Может натолкнет на мысль. Код в файле Program.cs


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата frolandr ()
нужно искать решение, к сожалению пока нет времени.

Посмотри здесь в исходнике. Может натолкнет на мысль. Код в файле Program.cs

Автор - mishem
Дата добавления - 04 Ноября 2024 в 10:45
frolandrДата: Ср, 06 Ноября 2024, 16:11 | Сообщение # 45
Участник
Всяко пробовал, не получается в 32 переделать, на некоторых изображениях почему то каналы меняются, из-за чего изображение стало зеленым, а вот прозрачность так и не получилась.
Прикрепления: 3495462.jpg (38.5 Kb)
 
СообщениеВсяко пробовал, не получается в 32 переделать, на некоторых изображениях почему то каналы меняются, из-за чего изображение стало зеленым, а вот прозрачность так и не получилась.

Автор - frolandr
Дата добавления - 06 Ноября 2024 в 16:11
mishemДата: Ср, 06 Ноября 2024, 17:11 | Сообщение # 46
Эксперт форума
Жаль. Я не вникал как устроены изображения. Помочь ничем не могу. :(
Может отсюда что черпнешь?


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеЖаль. Я не вникал как устроены изображения. Помочь ничем не могу. :(
Может отсюда что черпнешь?

Автор - mishem
Дата добавления - 06 Ноября 2024 в 17:11
mishemДата: Ср, 06 Ноября 2024, 17:36 | Сообщение # 47
Эксперт форума
Вот здесь вроде есть что то интересное.

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеВот здесь вроде есть что то интересное.

Автор - mishem
Дата добавления - 06 Ноября 2024 в 17:36
frolandrДата: Чт, 07 Ноября 2024, 13:18 | Сообщение # 48
Участник
Спасибо, примерно так и делаю. В clipboard содержится bitmap, создаю новый png 32 битный с альфа каналом, но в обменнике изображение 24 битное, при Assign(Clipboard()) оно просто накладывается на пустое прозрачное изображение. Нужно 24 конвертировать в 32, но что-то идет не так, почему то у меня вообще пустой некорректный файл получается.

Хотел проверить еще так: взял 32 битный png, средствами виндовс скопировал его, но видимо он копируется в какое-то другое место, потому что плагин не обнаружил изображение в обычном clipboard. т.е. Иначе можно было бы проверить как плагин обрабатывает 32 битный png.
 
СообщениеСпасибо, примерно так и делаю. В clipboard содержится bitmap, создаю новый png 32 битный с альфа каналом, но в обменнике изображение 24 битное, при Assign(Clipboard()) оно просто накладывается на пустое прозрачное изображение. Нужно 24 конвертировать в 32, но что-то идет не так, почему то у меня вообще пустой некорректный файл получается.

Хотел проверить еще так: взял 32 битный png, средствами виндовс скопировал его, но видимо он копируется в какое-то другое место, потому что плагин не обнаружил изображение в обычном clipboard. т.е. Иначе можно было бы проверить как плагин обрабатывает 32 битный png.

Автор - frolandr
Дата добавления - 07 Ноября 2024 в 13:18
mishemДата: Чт, 07 Ноября 2024, 19:44 | Сообщение # 49
Эксперт форума
Цитата frolandr ()
Нужно 24 конвертировать в 32

Там нужно сначала альфа канал наложить.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата frolandr ()
Нужно 24 конвертировать в 32

Там нужно сначала альфа канал наложить.

Автор - mishem
Дата добавления - 07 Ноября 2024 в 19:44
mishemДата: Чт, 07 Ноября 2024, 19:53 | Сообщение # 50
Эксперт форума
Код из исходника при нажатии на кнопку вставить избуфера

Код

procedure TFmMain.btnPasteClick(Sender: TObject);
var
  p: TPicture;
begin
  if not Clipboard.HasFormat(CF_PICTURE) then
  begin
    MessageDlg('The clipboard has no image!', mtError, [mbOk], 0);
    Exit;
  end;

  p := TPicture.Create;
  try
    TMyClipboard(Clipboard).AssignTo(p);

  finally
    if Sender = btnPaste then
      SetGraphic(0, p.Graphic)
    else
      SetGraphic(1, p.Graphic);

    FreeAndNil(p);
  end;
end;

procedure TFmMain.pbPaint(Sender: TObject);
var
  bmp: TBitmap;
  rct: Trect;
  pbx: TPaintBox;
  src: TBitmap;
  start, stop, freq: Int64;
begin
  if not (Assigned(FPNG))then
    Exit;

  if Sender is TPaintBox then
    pbx := Sender as TPaintBox
  else
    pbx := pb;

  rct := pbx.ClientRect;
  bmp := CreateBmpRect(rct, pf32bit);

  // получить битмап пропорционально ранее созданному PNG
  src := LoadBitmapFromGraphic(Image2.Picture.Graphic, FPNG.Width);
  QueryPerformanceFrequency(freq);
  QueryPerformanceCounter(start);

  try
    // если не 32 бита, две следующие функции с таким
    // битмапом работать не будут
    src.PixelFormat := pf32Bit;
    // сделать картинку полностью прозрачной
    src := SetBitmapAlpha(src,0);
    // перенос альфа-канала
    src := SetPngAlphaToBitmap(FPNG, src);
    // в конце, установка альфа формата
    src.AlphaFormat := afDefined;
    // посчитать время
    QueryPerformanceCounter(stop);
    Label1.Caption :=
      FormatFloat('###,##0.###',1000*(stop - start)/freq)+' msec';

    // получить пропрциональный размерам окна прямоугольник
    rct := GetProportRect(GetImageRect(src), rct.Width, rct.Height);
    // отцентрировать его
    rct := CenterInRect(pbx.ClientRect, rct);

    with bmp.Canvas do
    begin
      Brush.Color := clWhite;
      FillRect(ClipRect);
      StretchDraw(rct,src);
      Brush.Style := bsClear;
      Pen.Color := clBtnShadow;
      Rectangle(ClipRect);
    end;

  finally
    pbx.Canvas.Draw(0,0,bmp);
    FreeAndNil(bmp);
    FreeAndNil(src);
  end;
end;


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеКод из исходника при нажатии на кнопку вставить избуфера

Код

procedure TFmMain.btnPasteClick(Sender: TObject);
var
  p: TPicture;
begin
  if not Clipboard.HasFormat(CF_PICTURE) then
  begin
    MessageDlg('The clipboard has no image!', mtError, [mbOk], 0);
    Exit;
  end;

  p := TPicture.Create;
  try
    TMyClipboard(Clipboard).AssignTo(p);

  finally
    if Sender = btnPaste then
      SetGraphic(0, p.Graphic)
    else
      SetGraphic(1, p.Graphic);

    FreeAndNil(p);
  end;
end;

procedure TFmMain.pbPaint(Sender: TObject);
var
  bmp: TBitmap;
  rct: Trect;
  pbx: TPaintBox;
  src: TBitmap;
  start, stop, freq: Int64;
begin
  if not (Assigned(FPNG))then
    Exit;

  if Sender is TPaintBox then
    pbx := Sender as TPaintBox
  else
    pbx := pb;

  rct := pbx.ClientRect;
  bmp := CreateBmpRect(rct, pf32bit);

  // получить битмап пропорционально ранее созданному PNG
  src := LoadBitmapFromGraphic(Image2.Picture.Graphic, FPNG.Width);
  QueryPerformanceFrequency(freq);
  QueryPerformanceCounter(start);

  try
    // если не 32 бита, две следующие функции с таким
    // битмапом работать не будут
    src.PixelFormat := pf32Bit;
    // сделать картинку полностью прозрачной
    src := SetBitmapAlpha(src,0);
    // перенос альфа-канала
    src := SetPngAlphaToBitmap(FPNG, src);
    // в конце, установка альфа формата
    src.AlphaFormat := afDefined;
    // посчитать время
    QueryPerformanceCounter(stop);
    Label1.Caption :=
      FormatFloat('###,##0.###',1000*(stop - start)/freq)+' msec';

    // получить пропрциональный размерам окна прямоугольник
    rct := GetProportRect(GetImageRect(src), rct.Width, rct.Height);
    // отцентрировать его
    rct := CenterInRect(pbx.ClientRect, rct);

    with bmp.Canvas do
    begin
      Brush.Color := clWhite;
      FillRect(ClipRect);
      StretchDraw(rct,src);
      Brush.Style := bsClear;
      Pen.Color := clBtnShadow;
      Rectangle(ClipRect);
    end;

  finally
    pbx.Canvas.Draw(0,0,bmp);
    FreeAndNil(bmp);
    FreeAndNil(src);
  end;
end;

Автор - mishem
Дата добавления - 07 Ноября 2024 в 19:53
frolandrДата: Пт, 08 Ноября 2024, 16:42 | Сообщение # 51
Участник
Этот кусок кода на Делфи, я не могу его полностью перевести в c++builder. Начал, но не пойму что это такое: TMyClipboard(Clipboard).AssignTo(p);
Если это класс, то с классами в среде я даже не пробовал работать. На сколько я мог прочесть в нем производится получение изображения из обменника и отрисовка его на канве. Конвертации из 24 бит в 32 здесь нет.

Повторюсь нужно конвертировать изображение, без этого оно не будет отображаться в Фотошопе с прозрачностью. Просто попробуй скопировать изображение с того сайта, что ссылку давал выше, затем открой Фотошоп, создай документ с прозрачностью и вставь изображение из обменника через Редактирование->Вставить. Изображение будет как и в плагине с черным фоном. Потому что он тоже его не переводит в 32бит, а вставляет что есть.
 
СообщениеЭтот кусок кода на Делфи, я не могу его полностью перевести в c++builder. Начал, но не пойму что это такое: TMyClipboard(Clipboard).AssignTo(p);
Если это класс, то с классами в среде я даже не пробовал работать. На сколько я мог прочесть в нем производится получение изображения из обменника и отрисовка его на канве. Конвертации из 24 бит в 32 здесь нет.

Повторюсь нужно конвертировать изображение, без этого оно не будет отображаться в Фотошопе с прозрачностью. Просто попробуй скопировать изображение с того сайта, что ссылку давал выше, затем открой Фотошоп, создай документ с прозрачностью и вставь изображение из обменника через Редактирование->Вставить. Изображение будет как и в плагине с черным фоном. Потому что он тоже его не переводит в 32бит, а вставляет что есть.

Автор - frolandr
Дата добавления - 08 Ноября 2024 в 16:42
frolandrДата: Пт, 08 Ноября 2024, 16:47 | Сообщение # 52
Участник
Вот так примерно нужно, но где-то я тут допускаю ошибку...

Код

    HANDLE handle = GetClipboardData(CF_DIB); //извлекает данные из буфера обмена в заданном формате. Буфер обмена, должен быть предварительно открыт.

    HDC hdc;

    if (handle) {
     BITMAPINFO* bmpinfo = (BITMAPINFO*)GlobalLock(handle);

     if (bmpinfo) {
      int offset = (bmpinfo->bmiHeader.biBitCount > 8) ?
       0 : sizeof(RGBQUAD) * (1 << bmpinfo->bmiHeader.biBitCount);
      const char* bits = (const char*)(bmpinfo)+bmpinfo->bmiHeader.biSize + offset;
      HBITMAP hbitmap = CreateDIBitmap(hdc, &bmpinfo->bmiHeader, CBM_INIT, bits, bmpinfo, DIB_RGB_COLORS);

      //преобразовать в 32-битный формат
      BITMAP bm;
      GetObject(hbitmap, sizeof(bm), &bm);
      int w = bm.bmWidth;
      int h = bm.bmHeight;
      char *bits32 = new char[w*h*4];

      BITMAPINFOHEADER bmpInfoHeader = { sizeof(BITMAPINFOHEADER), w, h, 1, 32 };
      HDC hdc = GetDC(0);
      GetDIBits(hdc, hbitmap, 0, h, bits32, (BITMAPINFO*)&bmpInfoHeader, DIB_RGB_COLORS);
      ReleaseDC(0, hdc);

      //здесь сохраняем в файл
//
//

      
      delete[]bits32; //очистка
 
СообщениеВот так примерно нужно, но где-то я тут допускаю ошибку...

Код

    HANDLE handle = GetClipboardData(CF_DIB); //извлекает данные из буфера обмена в заданном формате. Буфер обмена, должен быть предварительно открыт.

    HDC hdc;

    if (handle) {
     BITMAPINFO* bmpinfo = (BITMAPINFO*)GlobalLock(handle);

     if (bmpinfo) {
      int offset = (bmpinfo->bmiHeader.biBitCount > 8) ?
       0 : sizeof(RGBQUAD) * (1 << bmpinfo->bmiHeader.biBitCount);
      const char* bits = (const char*)(bmpinfo)+bmpinfo->bmiHeader.biSize + offset;
      HBITMAP hbitmap = CreateDIBitmap(hdc, &bmpinfo->bmiHeader, CBM_INIT, bits, bmpinfo, DIB_RGB_COLORS);

      //преобразовать в 32-битный формат
      BITMAP bm;
      GetObject(hbitmap, sizeof(bm), &bm);
      int w = bm.bmWidth;
      int h = bm.bmHeight;
      char *bits32 = new char[w*h*4];

      BITMAPINFOHEADER bmpInfoHeader = { sizeof(BITMAPINFOHEADER), w, h, 1, 32 };
      HDC hdc = GetDC(0);
      GetDIBits(hdc, hbitmap, 0, h, bits32, (BITMAPINFO*)&bmpInfoHeader, DIB_RGB_COLORS);
      ReleaseDC(0, hdc);

      //здесь сохраняем в файл
//
//

      
      delete[]bits32; //очистка

Автор - frolandr
Дата добавления - 08 Ноября 2024 в 16:47
mishemДата: Пт, 08 Ноября 2024, 20:58 | Сообщение # 53
Эксперт форума
Вот здесь вроде в самом конце какое то решение есть.

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеВот здесь вроде в самом конце какое то решение есть.

Автор - mishem
Дата добавления - 08 Ноября 2024 в 20:58
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: