Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как узнать RGB записанный в 2 байта

Сообщения:  [1-10]   [11-16] 

 
 автор: Nataliya ~*~   (29.03.2009 в 23:51)   письмо автору
 
   для: Лерк   (29.03.2009 в 23:43)
 

Сори, это я накосячила, уже выдает.. Прада с другим цветом уже не теряет а добавляет в излишок)

  Ответить  
 
 автор: Лерк   (29.03.2009 в 23:43)   письмо автору
 
   для: Nataliya ~*~   (29.03.2009 в 23:41)
 

Как Вы проверяете?

$Bits1 = 0xFF;
$Bits2 = 0xFF;

$B = ($Bits1&0x1F)*8 + (7&(8 -($Bits1&1)));  
$G = (($Bits1>>5)&7)|(($Bits2&7) << 3 ); $G = $G*4 + (3&(4 - ($G&1)));   
$R = ($Bits2>>3)&0x1F; $R = $R*8 + (7&(8-($R&1)));

var_dump($R, $G, $B);

Мне выдаёт: int(255) int(255) int(255)

  Ответить  
 
 автор: Nataliya ~*~   (29.03.2009 в 23:41)   письмо автору
 
   для: Nataliya ~*~   (29.03.2009 в 23:37)
 

Не даст(

  Ответить  
 
 автор: Nataliya ~*~   (29.03.2009 в 23:37)   письмо автору
 
   для: Лерк   (29.03.2009 в 23:35)
 

Спасибо, щя проверю.

  Ответить  
 
 автор: Лерк   (29.03.2009 в 23:35)   письмо автору
 
   для: Trianon   (29.03.2009 в 23:15)
 

$B = ($Bits1&0x1F)*8 + (7&(8 -($Bits1&1))); 
$G = (($Bits1>>5)&7)|(($Bits2&7) << 3 ); $G = $G*4 + (3&(4 - ($G&1)));  
$R = ($Bits2>>3)&0x1F; $R = $R*8 + (7&(8-($R&1)));

Вот такой даст

  Ответить  
 
 автор: Лерк   (29.03.2009 в 23:29)   письмо автору
 
   для: Nataliya ~*~   (29.03.2009 в 22:54)
 

А какой тип (и подтип) картинки? Вот тут, в принципе, вроде всё что надо есть: http://www.4neurons.com/other/mbm/MBM.TXT

  Ответить  
 
 автор: Trianon   (29.03.2009 в 23:15)   письмо автору
 
   для: Trianon   (29.03.2009 в 23:04)
 

В конце концов можно сместить округление к середине. Будет еще больше похоже на истину, но утраченных бит все равно не восстановит.
$B = ($Bits1&0x1F)*8 + (7&(8 -($Bits&1)));
$G = (($Bits1>>5)&7)|(($Bits2&7); $G = $G*4 + (3&(4 - ($G&1)));
$R = ($Bits2>>3)&1F; $R = $R*8 + (7&(8-($R&1)));

этот код дает 255,255,255 ?

  Ответить  
 
 автор: Nataliya ~*~   (29.03.2009 в 23:09)   письмо автору
 
   для: Trianon   (29.03.2009 в 23:04)
 

Есть еще такой метод упаковки цвета в два байта, взятый из python'а

r,g,b=255,255,255
i,red,blue=0,None,None
while i<256:
if red==None and r<=i+4:red=int(i/8.25)
if blue==None and b<=i+4:blue=int(i/8.25)
if red!=None and blue!=None:break
i+=8.25
color,i=red*8+blue*0x100,0
for green in range(8):
if i in [0,65,130,195]:period=32
else:period=33
if g>i+period-2:i+=period
else:
for j in range(0,32,4):
if g<=i+j+2:color+=j*0x800+green;break
break
return chr(color/0x100)+chr(color%0x100)
может он поможет?

  Ответить  
 
 автор: Trianon   (29.03.2009 в 23:04)   письмо автору
 
   для: Nataliya ~*~   (29.03.2009 в 22:13)
 

В зеленом я ошибся. Так более точно.
$G = ((($Bits1>>5)&7)|(($Bits2&7)<<3)) << 2;

  Ответить  
 
 автор: Лерк   (29.03.2009 в 23:00)   письмо автору
 
   для: Nataliya ~*~   (29.03.2009 в 22:54)
 

Ой, Вы знаете я ошибся. Тут получается, что R и B будут числами, кратными 8-ми, а G - может просто принимать значения от 0 до 63.

Всё равно получается, что белый никак не получится задать.

Я руководствуюсь лишь тем кодом, что Вы выложили. Формата mbm я, к сожалению, не знаю (

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования