purebasic.info

PureBasic forum
Текущее время: Пт янв 19, 2018 10:37 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: Чт июн 09, 2016 10:45 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Можно ли положить на канвас картинку с прозрачными областями, чтобы их было видно, а потом сохранить в png с прозрачностью.
Возникла такая надобность, прочесть картинку, подрисовать и сохранить изменения.
У меня вместо прозрачности чёрные пятна.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт июн 09, 2016 2:23 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2241
Откуда: Russia — Belarus
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
Пункты репутации: 11
Не знаю на счет канваса, но это конечно же возможно с простым рисованием на изображениях.
Надо рисовать в режиме #PB_2DDrawing_AllChannels и конечно же работать с изображением как с 32-х битным:

Код:
1
2
3
4
5
6
7
8
9
10
11
UsePNGImageDecoder()
UsePNGImageEncoder()
 
If LoadImage(0, "C:\1.png")
  StartDrawing(ImageOutput(0))
  DrawingMode(#PB_2DDrawing_AllChannels)
  LineXY(0, 0, 32, 32, RGBA(255, 255, 0, 128))
  StopDrawing()
  SaveImage(0, "C:\2.png", #PB_ImagePlugin_PNG, #PB_Ignore, 32)
  FreeImage(0)
EndIf



Оригинал:
Изображение

После кода (добавляется полупрозрачная линия, альфа-канал остаётся):
Изображение

_________________
EnableExplicit User


Последний раз редактировалось qpAHToMAS Чт июн 09, 2016 2:30 pm, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт июн 09, 2016 2:25 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 27, 2012 7:12 pm
Сообщений: 880
Откуда: Кустанай
Благодарил (а): 27 раз.
Поблагодарили: 13 раз.
Пункты репутации: 7
newJS писал(а):
Можно ли положить на канвас картинку с прозрачными областями, чтобы их было видно, а потом сохранить в png с прозрачностью.
Возникла такая надобность, прочесть картинку, подрисовать и сохранить изменения.
У меня вместо прозрачности чёрные пятна.


А RGBA разве не то?
CreateImage(#Image, Width, Height [, Depth [, BackColor]])
параметр BackColor устанавливается в альфу, в справке это есть.

Цитата:
Цвет задней RGB () используется при создании изображения. Этот цвет может быть установлен в #PB_Image_Transparent для создания изображения с альфа-каналом, установленным в полной прозрачности. Это влияет только на 32-битных изображений. По умолчанию BackColor черного цвета, если не указано.


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

_________________
Детям нельзя в интернет. От детей интернет тупеет.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 10, 2016 7:42 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Спасибо, всё это я пробовал, у меня чёрным заливается там где прозрачность была.
Наверно чёйтось не так делал, попробую как предложено.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс июн 12, 2016 6:37 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Вроде всё получилось, но столкнулся с проблемой #PB_Ignore, при сохранении JPG файлов, это чудо природы не игнорит параметр, а использует значение константы как нулевое значение, в итоге сохраняется чёрно-белое не пойми что.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс июн 12, 2016 11:32 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2241
Откуда: Russia — Belarus
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
Пункты репутации: 11
Ну значит поставь желаемое качество, 8 например.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн июн 13, 2016 6:27 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Да я про то, что это вроде дырка в РВ, может кто немцам напишет, пусть посмотрят.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт июн 14, 2016 10:57 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11079
Благодарил (а): 4 раз.
Поблагодарили: 384 раз.
newJS писал(а):
Вроде всё получилось, но столкнулся с проблемой #PB_Ignore, при сохранении JPG файлов, это чудо природы не игнорит параметр
Смотрим справку. https://www.purebasic.com/documentation ... image.html
Там упоминается #PB_Ignore?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср июн 15, 2016 6:46 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Пётр писал(а):
Там упоминается #PB_Ignore?

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

Пётр, для других то расширений #PB_Ignore работает как надо, но только пока ты сохраняешь одинаковые файлы, а я столкнулся со смесью всех используемых расширений, оно и вылезло, и продолжаю считать что это таки ошибка, для jpg тоже должно игнориться и включаться по умолчанию, тоесть 7.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср июн 15, 2016 3:56 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2241
Откуда: Russia — Belarus
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
Пункты репутации: 11
Вот кстати с игнором проблема. В том же Pawn можно было писать _ за место параметра, использовалось бы дефолтное значение внутри функции.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср июн 15, 2016 4:45 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6223
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
newJS писал(а):
продолжаю считать что это таки ошибка, для jpg тоже должно игнориться и включаться по умолчанию, тоесть 7.

Почему же 7?
Ты же в курсе, что вместо констант всегда можно использовать их числовые значения, а вместо чисел соответствующие константы?
Так уж вышло, что константа #PB_Ignore это число, которое при определённых условиях = 1
Код:
1
Debug Hex(#PB_Ignore,#PB_Byte)



Или = -65535 ( что явно меньше 0) при
Код:
1
Debug  #PB_Ignore



А флаг при сохранении SaveImage меняется от 0 до 10, и в любом случае если эту константу использовать в виде флага, то это значение и подставляется, и качество соответствующее!

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт июн 16, 2016 7:27 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Виталь, а ты в курсе, что если ты ставишь эту константу, то ты вправе ожидать именно игнорирования этого параметра?
Вот исходя из этого, я таки продолжаю считать, что это федина плюха, и её надо исправлять.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт июн 16, 2016 9:19 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6223
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
newJS писал(а):
Виталь, а ты в курсе, что если ты ставишь эту константу, то ты вправе ожидать именно игнорирования этого параметра?
Вот исходя из этого, я таки продолжаю считать, что это федина плюха, и её надо исправлять.

Неверное суждение. Ещё раз повторю, константа - это не указание к действию, не макрос и не инструкция, это просто ЧИСЛО ( или строка в зависимости от типа). Если в справке это явно не указано что #PB_Ignore допустимо в этом случае, то оно не допустимо.
Любая константа, попадающая в область допустимых значений это просто число.
Ну вот смотри, самая неподходящая в этом случае константа #PB_2DDrawing_AlphaChannel

Код:
1
SaveImage(0, "C:\2.jpg", #PB_ImagePlugin_JPEG, #PB_2DDrawing_AlphaChannel, 32)



Сохранит изображение с качеством 8 и ни каких ошибок не возникнет. И Фред тут не причем. :D

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 17, 2016 5:46 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
kvitaliy писал(а):
Ещё раз повторю, константа - это не указание к действию

Не убедил, нахрена она тогда нужна? константа, которая и не константа вовсе, а переменная.

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

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 17, 2016 5:53 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6223
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
newJS писал(а):
[
Не убедил, нахрена она тогда нужна? константа, которая и не константа вовсе, а переменная.
... потому что по факту она и не константа оказывается.

Убеждать я и не собирался. Просто проясняю ситуацию.
Те, кто умеет читать вдумчиво, уже наверно поняли.
Где это я написал, что #PB_Ignore это не константа? Обычная константа, которая применяется согласно Справке, и голову не надо ломать, просто справку читать.

_________________
read-only


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB