Красный канал битмапа

Тема в разделе "WASM.BEGINNERS", создана пользователем dgs, 23 фев 2009.

  1. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Всем привет. В одной из картинок зашифровано сообщение, другая является ключом (эталоном). Алгоритм шифрования прост: в красный канал каждого пикселя ключевой картинки добавлена уменьшенная в 100 раз интенсивность этого же
    пикселя из картинки с сообщением (она черно-белая). Размер картинок, естественно, одинаков. Формат - bmp. Как с помощью асма вытащить красный канал?
     
  2. satrau

    satrau Александр

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    229
    архив не открывается. чем зип не угодил?
     
  3. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    http://ru.wikipedia.org/wiki/BMP

    http://slil.ru/26991240 - еще одна дока на Bitmap
     
  4. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    с помощью какого асма? - на каком асме ты програмируешь? - исходников ПОЛНО на сайте что за вопросы?
     
  5. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    FASM!!! Просто обьяснив алгоритм действий я и так пойму...
     
  6. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    GetRValue MACRO color

    PUSH ebx
    mov ebx, color
    xor eax, eax
    mov al, bl
    POP ebx

    ENDM

    ;;;;;;

    LOCAL pt:POINT, clr :COLORREF

    invoke GetPixel,hdc,pt.x,pt.y
    mov clr, eax
    GetRValue clr
     
  7. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Код (Text):
    1. f        rd 1
    2. width    rd 1
    3. height   rd 1
    4. bitmap   rd 1
    5. size1    rd 1
    6. size2    rd 1
    7. buffer   rd 1
    8. target   rd 1
    9. raster   rd 1
    10. filename db 'C:\bitmap.bmp',0
    11.  
    12. --//--
    13.  
    14. invoke CreateFile,filename,GENERIC_READ,0,0,OPEN_EXISTING,0,0
    15. mov    [f],eax
    16. invoke SetFilePointer,eax,10,0,FILE_BEGIN
    17. invoke ReadFile,[f],raster,4,buffer,0
    18. invoke SetFilePointer,[f],18,0,FILE_BEGIN
    19. invoke ReadFile,[f],width,8,buffer,0
    20. mov    eax,[width]
    21. mul    [height]
    22. mov    [size2],eax
    23. lea    eax,[eax*2+eax]
    24. mov    [size1],eax
    25. invoke VirtualAlloc,0,eax,MEM_COMMIT,PAGE_READWRITE
    26. mov    [bitmap],eax
    27. invoke SetFilePointer,[f],[raster],0,FILE_BEGIN
    28. invoke ReadFile,[f],[bitmap],[size1],buffer,0
    29. invoke CloseHandle,[f]
    30.  
    31. invoke VirtualAlloc,0,[size2],MEM_COMMIT,PAGE_READWRITE
    32. mov    [target],eax
    33.  
    34. mov    esi,[bitmap]
    35. mov    edi,eax
    36. mov    edx,[size]
    37. add    edx,esi
    38. @@:movsb
    39.    add esi,2
    40.    cmp esi,edx
    41. jne @b
    42.  
    43. invoke VirtualFree,[target],[size2],MEM_DECOMMIT
    44. invoke VirtualFree,[bitmap],[size1],MEM_DECOMMIT
     
  8. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Всем большое спасибо...
     
  9. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Решил поднять тему, дабы возникли вопросы...

    1. Как правильно выравнивать данные в битмапе с глубиной 24 бита?

    2. Почему писанная мною прога выводит тока 42 кб, вместо 125 ?

    Исходник в атаче...