Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение глубины цвета 
:(
    Опции темы
Иннокентий
Дата 6.3.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



Цитата(Иннокентий @ 27.2.2006, 04:21 Найти цитируемый пост)
Присоединённый файл ( Кол-во скачиваний: 1 )
  0098.exe 32,00 Kb


Посмотри где тут искажение?

PM MAIL   Вверх
Naghual
Дата 6.3.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Ок. Сделай то-же самое с фоткой.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Иннокентий
Дата 7.3.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



Цитата(Иннокентий @ 27.2.2006, 04:21 Найти цитируемый пост)
Присоединённый файл ( Кол-во скачиваний: 0 )
  0098_023_0.exe 72,00 Kb


Попробуй вот этот файл: 0098-023-0.EXE


PM MAIL   Вверх
Akina
Дата 7.3.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Я что-то не понимаю - куда копья ломаем?

Цитата(Иннокентий @ 27.2.2006, 05:21 Найти цитируемый пост)
Можно ли программно получить 16 миллионов цветов только серого цвета. И чтобы при этом полутона не повторялись.

256 градаций серого - это предел. То есть в файле можно настрогать и 16 миллионов несовпадающих оттенков (создать собственную палитру) - но вывести их на экран или печать не получится просто потому, что нет такого видеорежима или режима печати. Да и нечем - нет программных средств работы с такой палитрой и аппаратных средств ее отображения.

Соответственно однозначное преобразование 256 градаций серого (8 бит на точку) в полноцветное (24-битное) - задача невозможная. Будут горы вариантов, каждый из которых - совершенно легальный. Хотя при этом возможно решение задачи выбора вырианта.

Цитата(Иннокентий @ 27.2.2006, 05:21 Найти цитируемый пост)
как программно найти и выставить между двумя разными по цвету точками соответствующий их единый полутон «этих двух точек».

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

Цитата(Иннокентий @ 27.2.2006, 05:21 Найти цитируемый пост)
Как полноцветную картинку с расширением (*.bmp) перевести из 16 миллионов цветов в - 256 цветов или 128 или в 64 или 32

Ну это совсем просто - откусывание младших битов каждой цветовой составляющей. С округлением к ближайшему.

Цитата(Иннокентий @ 27.2.2006, 05:21 Найти цитируемый пост)
этот код позволяет создать неповторяющихся всего 256 черно-белых тонов

Правильно, остальные сочетания - не серые. Цветные.

Цитата(Иннокентий @ 3.3.2006, 22:33 Найти цитируемый пост)
Новый подход и разработанная на основе его технология «цвета» в будущем позволит перевести всю технику из трех цветного в черно-белый цвет. Этот способ даст большую скорость передачи информации на расстоянии. При передачи только одной цветной картинки приходится передавать три с разными цветами (Красный, Зеленый, Синий).
А теперь достаточно будет отправить только одну черно-белую фото, и результат будет тот же, а эффект колоссальный.

Нет, не приходится передавать три картинки. Передается одна. 24 бита на точку. Вы предлагаете упаковать их в 8 бит и на другой стороне снова развернуть. Так вот - упаковать можно, а развернуть БЕЗ ПОТЕРИ - не получится. Копия будет отличаться от оригинала. А если родить формат с 16 миллионами градаций серого - какая разница какие 24 бита передавать, цветные или серые? размер тот же.
Не зря были рождены упакованные форматы - начиная от RLE и кончая JPG. Причем обрати внимание - где допустимо управление степенью сжатия, непременно указывается, что чем выше степень сжатия, тем хуже качество копии. А "и рыбку съесть, и косточкой не подавиться" - это абсолютный и невозможный импоссибль.Каждый, кто заявлял об успехе на подобного рода пути, по ближайшем рассмотрении оказывался шарлатаном, хорошо если заблуждающемся, а не сознательным...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Иннокентий
Дата 8.3.2006, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



Цитата(Иннокентий @ 27.2.2006, 05:21): «Как полноцветную картинку с расширением (*.bmp) перевести из 16 миллионов цветов в - 256 цветов или 128 или в 64 или 32».

Цитата: Akina «Ну это совсем просто - откусывание младших битов каждой цветовой составляющей. С округлением к ближайшему».

Мир вам!
Научи, мня как это сделать правильно в программном коде на Visual Basic. Покажи простенький пример, если у тебя такой имеется.

Цитата: Akina «256 градаций серого - это предел. То есть в файле можно настрогать и 16 миллионов несовпадающих оттенков (создать собственную палитру) - но вывести их на экран или печать не получится просто потому, что нет такого видеорежима или режима печати. Да и нечем - нет программных средств работы с такой палитрой и аппаратных средств ее отображения».

Я это и сам понял, оттого и задал Вам этот щекотливый вопрос, а в друг!...

Цитата: Akina «Соответственно однозначное преобразование 256 градаций серого (8 бит на точку) в полноцветное (24-битное) - задача невозможная. Будут горы вариантов, каждый из которых - совершенно легальный. Хотя при этом возможно решение задачи выбора варианта».

Нет ничего невозможного, даже иногда мертвые встают из гробов своих, а мы не можем исправить даже ошибки дел рук своих. Посмотри на маленькое семя, оно такое крошечное, но из него вырастает больное полноценное дерево. Поэтому так говорить: «задача невозможная», в нашем деле не уместно.

Цитата: Akina «Нет, не приходится передавать три картинки. Передается одна. 24 бита на точку. Вы предлагаете упаковать их в 8 бит и на другой стороне снова развернуть. Так вот - упаковать можно, а развернуть БЕЗ ПОТЕРИ - не получится. Копия будет отличаться от оригинала. А если родить формат с 16 миллионами градаций серого - какая разница какие 24 бита передавать, цветные или серые? размер тот же».

Неважно три картинки, или три раза по 8-(24),суть одно, у нас есть в наличии только 8 полноценных бит, но и в этом уже достаточно, чтобы можно было найти то самое умное решение.

Помогите мне с решением простых примерах, а я Вам помогу решить весьма сложные.

Начни с этого: Цитата: Akina «Ну это совсем просто - откусывание младших битов каждой цветовой составляющей. С округлением к ближайшему».

Цитата: Akina «Каждый, кто заявлял об успехе на подобного рода пути, по ближайшем рассмотрении оказывался шарлатаном, хорошо если заблуждающемся, а не сознательным...».

PM MAIL   Вверх
Иннокентий
Дата 8.3.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 27.2.2006

Репутация: нет
Всего: нет




Это программа позволяет найти, между двух разных точек по цвету общую среднюю по цвету точку.
Код


Private Sub Command1_Click()
Dim V, V1
Dim D1, R1, G1, B1
Dim D2, R2, G2, B2
Dim D3, R3, G3, B3
'
V = 255 ' Красный цвет
V1 = 65535 ' Желтый цвет
'
R1 = V Mod 256 'Красный
G1 = ((V And &HFF00) / 256) Mod 256 'Зеленый
B1 = ((V And &HFF0000) / 65536) 'Синий
'
D1 = RGB(R1, G1, B1)
Picture1.PSet (100, 100), D1

'------
R2 = V1 Mod 256 'Красный
G2 = ((V1 And &HFF00) / 256) Mod 256 'Зеленый
B2 = ((V1 And &HFF0000) / 65536) 'Синий
'
D2 = RGB(R2, G2, B2)
Picture1.PSet (300, 100), D2

'------
R3 = (R1 + R2) / 2
G3 = (G1 + G2) / 2
B3 = (B1 + B2) / 2
'
D3 = RGB(R3, G3, B3) ‘
Picture1.PSet (200, 100), D3

End Sub




Можете подсказать мне иной вариант? Как найти между двумя известными точками, разными по цвету, несколько промежуточных точек в цикле?

Буду Вам весьма благодарен.
Иннокентий <[email protected]>



PM MAIL   Вверх
Akina
Дата 9.3.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Иннокентий @ 8.3.2006, 21:48 Найти цитируемый пост)
Как найти между двумя известными точками, разными по цвету, несколько промежуточных точек в цикле?

Функция преобразования RGB в Color имется - RGB(red, green, blue).
Обратной нет, но ее можно создать, вернее не функцию, а процедуру - ибо нужно получить массив либо 3 переменных. А заодно функцию выделения нужного компонента

Код

Public Sub Color2RGB(lColor as Long, iRed as Integer, iGreen as Integer, iBlue as Integer)
iRed=iColor MOD 256&
iGreen=(iColor \ 256&) MOD 256&
iBlue = iColor \ 65536&
End Sub

Public Function GetColorComponent(lColor as Long, iComponent as Integer) as Integer
Select Case iComponent
  Case vbBlue ' 1
    GetColorComponent = iColor \ 65536&
  Case vbGreen ' 2
    GetColorComponent = (iColor \ 256&) MOD 256&
  Case vbRed ' 4
    GetColorComponent = iColor MOD 256&
  Case Else
    GetColorComponent = 0
End Select
End Function


А затем
Код

For i = 1 To N - 1
Component(i) = (Component(0) * i + Component(N) * (N - i + 1)) \ (N + 1)
Next



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SCINER2
Дата 10.3.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.2.2006

Репутация: нет
Всего: нет



В десять раз быстрее вышеперечисленных методов!
Код

Option Explicit
'Created by SCINER: [email protected]

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Type RGBTYPE
  R As Byte
  G As Byte
  B As Byte
  A As Byte
End Type

Private Sub Command1_Click()
  Dim RGBA1 As RGBTYPE
  Dim RGBA2 As RGBTYPE
  Dim lColor1 As Long
  Dim lColor2 As Long
  lColor1 = vbRed
  lColor2 = vbYellow
  CopyMemory RGBA1, lColor1, 4
  CopyMemory RGBA2, lColor2, 4
  RGBA1.R = RGBA1.R * 0.5 + RGBA2.R * 0.5
  RGBA1.G = RGBA1.G * 0.5 + RGBA2.G * 0.5
  RGBA1.B = RGBA1.B * 0.5 + RGBA2.B * 0.5
  Print RGBA1.R
  Print RGBA1.G
  Print RGBA1.B
End Sub

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0830 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.