Мольбы о помощи по графике!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Мольбы о помощи по графике!

Сообщение Urvin » 04.06.2003 (Ср) 14:26

Как сохранить многоцветную картинку в битмап 256 цветов?
Или как привести картинку к 256 цветам (своим, статическим)?
Urvin I

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 04.06.2003 (Ср) 15:24

А кто мешает поочередно найти для каждого пикселя наиболее близкий из своей статической таблицы.

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 04.06.2003 (Ср) 17:22

Mikle писал(а):А кто мешает поочередно найти для каждого пикселя наиболее близкий из своей статической таблицы.


Долго. И потом на хранение каждого пикселя в VB - три байта. Наврядли это сработает

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 05.06.2003 (Чт) 8:40

Так
Наврядли это сработает
или все-таки
Долго
?
Про лимит времени вопрос вроде не шел...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.06.2003 (Чт) 8:54

Сработает, но долго.
Я так ещё на QBasic делал, когда формат BMP пытался вручную осмыслить, без мануала по оному.
Где-то тут файл с этим примером я сливал. Искать по слову хоуммейд
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

...

Сообщение Urvin » 05.06.2003 (Чт) 14:31

:oops: А как тогда брать каждый пиксель и приводить его к своим?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 05.06.2003 (Чт) 15:27

For y=0 to WidthY-1
For x=0 to WidthX-1
c=picture1.point(x,y)
picture2.pset(x,y),Find(c)
next x
next y
end

Function Find(c as long)as long
dim r as byte,g as byte,b as byte
dim n as integer, num as integer,test as byte
r=c and &hFF
g=(c and &hFF00)\&h100
b=(c and &hFF0000)\&h10000
test=1000
for n=0 to 255
if (abs(TR(n)-r)+abs(TG(n)-g)+abs(TB(n)-b))>test then
test=(abs(TR(n)-r)+abs(TG(n)-g)+abs(TB(n)-b))
num=n
end if
next n
Find=RGB(TR(num),TG(num),TB(num)) 'num - номер цвета в таблице
End Function

Здесь TR(255), TG(255), TB(255) - твоя таблица, разложенная на цвета.
Писал не проверяя (нет под рукой Бейсика), но смысл, думаю, понятен.

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 05.06.2003 (Чт) 18:00

Ба-альшой спасиб, ибо долго мучаюсь!
Не так страшен русский танк, как его пьяный экипаж

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 05.06.2003 (Чт) 19:13

Mikle, не работает!
Выводит все аккуратно в черном цвете. если сделать test = 255 или ниже, получается что-то типа негатива.
Не так страшен русский танк, как его пьяный экипаж

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 06.06.2003 (Пт) 9:53

получается что-то типа негатива

возможно я перепутал RGB, вместо:
r=c and &hFF
g=(c and &hFF00)\&h100
b=(c and &hFF0000)\&h10000

попробуй:
b=c and &hFF
g=(c and &hFF00)\&h100
r=(c and &hFF0000)\&h10000

если не пойдет, я потом сделаю, а сейчас не на чем.

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 06.06.2003 (Пт) 10:50

Я разобрался. Функция вычленеия каналов у меня есть, проблема не в том. во-первых: типы переменных Test: byte, а значение 1000, исправляем на Integer, во-вторых знак '>' в сравнении меняем на '<'.
Как-то работает, причем на некоторых картинках нормально, а некоторые выдает такой мусор!
Не так страшен русский танк, как его пьяный экипаж

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 06.06.2003 (Пт) 16:38

а некоторые выдает такой мусор!

видимо палитра плохо соответствует картинке.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

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

    TopList  
cron