Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Akula-II
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 149
1

Изменение изображения загруженного в IPictureDisp

18.08.2011, 23:31. Просмотров 1381. Ответов 5
Метки нет (Все метки)

Например у меня есть картинка, загруженная в переменную TempPicture, типа IPictureDisp. Мне нужно удалить лишний фон. У меня есть алгоритм, а вот как получить доступ к массиву пикселей - вопрос. Может как-то возможно преобразовать это в вид DIB, а там вроде есть Bits(0,0,0) as Byte. Возможно как-то можно скопировать это все из оперативки, но необходимо знать, как представляются там данные.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2011, 23:31
Ответы с готовыми решениями:

Как сохранить картинку с сайта, загруженного в WebBrowser
Подскажите пожалуйста как можно сохранить картинку(images) с сайта загруженного...

Как узнать функцию загруженного exe файла?
Dobrii den'. Est' 1.exe file .V nem est' funkciya GetFromXML(). Teper' vo...

Всегда новое имя у загруженного на FTP файла, как?
Добрый день, господа программисты! Создал проект, функцией которого является...

Обновление изображения, загруженного в БД
Здравствуйте. Как обновить уже загруженное изображение в БД(загружал так)? Я...

Свойства загруженного изображения
Ребята, помогите начинающей) В Image загружаю изображение. Нужно вывести на...

5
Comanche
19.08.2011, 19:07 2
>> Мне нужно удалить лишний фон

Главное - что под этим подразумевается. Если просто 'взять пиксель - проанализировать его цвет - изменить цвет при необходимости', то проще всего загнать IPictureDisp в обычный пикчербокс (невидимый, если мешает), и далее поработать с Point и PSet.

Т.е. типа такого:
Visual Basic
1
2
3
4
Set Picture1.Picture = TempPicture
...
...
If Picture1.Point(X, Y) <> vbWhite Then Picture1.PSet (X, Y), vbWhite
Правда, это способ 'в лоб' и потому долгий: предполагается перебор X и Y в обычном цикле хотя если картинка маленькая - то почему бы и нет?

А так можно ещё попробовать поковырять GetDIBits и SetDIBitsToDevice, или слазить на VbAccelerator.Com (там было что-то по работе с битмапами), или вообще найти реализацию алгоритмов 'noise reduction'...
Akula-II
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 149
19.08.2011, 19:31  [ТС] 3
Этот способ не катит по следующим причинам:
1)Он слишком долгий
2)Если PictureBox меньше рисунка, то рисунок обрежется
3)И вообще это как-то неправильно.
0
Comanche
19.08.2011, 23:32 4
Согласен - я же написал, что это сойдёт лишь для маленьких картинок.
Можно ещё сложить с битмапом-маской при помощи BitBlt - уж это точно быстро будет.
Akula-II
0 / 0 / 0
Регистрация: 02.01.2011
Сообщений: 149
19.08.2011, 23:38  [ТС] 5
Спасибо за ответы. Я нашел решение GetDIBits. Эта функция преобразует из hdc объекта в вид DIB. А уже получение из IPictureDisp hDC - это уже дело техники.
Еще спасибо.
0
shurezz
1 / 1 / 0
Регистрация: 18.11.2010
Сообщений: 139
22.08.2011, 12:30 6
Насчёт
> Если PictureBox меньше рисунка, то рисунок обрежется
-В PictureBox`e есть свойство AutoSize (Установка по размерам картинки)
0
22.08.2011, 12:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2011, 12:30

Рисунок поверх загруженного изображения
Ребята! Проблема такая есть два Image в первый загружается изображение, теперь...

Авторазмер изображения, загруженного в Image
Я загружаю изображение через...

использование загруженного изображения в ashx
есть вот такая форма &lt;asp:Image ID=&quot;Image1&quot; runat=&quot;server&quot; /&gt;&lt;br /&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru