Русское сообщество AutoIt

  • Май 22, 2012, 14:40:58 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:

Создана конференция в Jabber'е для обсуждения мелких вопросов касающихся AutoIt.

Всем у кого есть джаббер-клиент, могут присоединиться к конференции по адресу xmpp:autoit@conference.jabber.ru

Комната/Конференция/Чат не призвана заменить этот форум, а лишь для ускорения получения ответов на элементарные и короткие вопросы, которые возможно не требуют создания специальной темы на данном форуме. Для всех остальных, сколь-нибудь сложных и комплексных проблем - исключительно на форум. Комната является постоянной, но при заходе у пользователя будет отсутствовать право писать в общий чат.

Тема на форуме.

Реклама

Автор Тема: Копируем пиксели нужного цвета на новую картинку  (Прочитано 698 раз)

0 Пользователей и 2 Гостей смотрят эту тему.

GenoTIP [?]

  • Новичок
  • *
  • Репутация: 1
  • Online Online
  • Пол: Мужской
  • Сообщений: 48
  • Версия AutoIt: 3.3.8.0
  • «Локоть побеждает кулак, а колено побеждает ногу»
    • Награды
как сохранить все это в новую картинку?

Код: AutoIt [Выделить]
#include <Array.au3>
#Include <GDIPlus.au3>
#include <GDIP.au3>

 _GDIPlus_Startup()
    $hBitmap = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\ex.jpg')
    $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap);Переводим изображение в библиотеку GDIPlus
    _WinAPI_DeleteObject($hBitmap);Удаляем изображение созданной функцией _WinAPI_CreateSolidBitmap
    $hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage);Получить графический контекст изображения
    $iWidth = _GDIPlus_ImageGetWidth($hBitmap)
    $iHeight = _GDIPlus_ImageGetHeight($hBitmap)
    $hIA = _GDIPlus_ImageAttributesCreate()
    _GDIPlus_ImageAttributesSetOutputChannel($hIA, 1, True, 0) ; Cyan
    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, 0, 0, $iWidth, $iHeight, $hIA)
    _GDIPlus_ImageAttributesDispose($hIA)

    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_ShutDown()
« Последнее редактирование: Февраль 24, 2012, 12:00:40 от GenoTIP »



  Записан

madmasles [?]

  • Модератор
  • *
  • *****
  • Репутация: 1426
  • Online Online
  • Пол: Мужской
  • Сообщений: 3819
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
GenoTIP
Оформите, пожалуйста, тему в соответствии с Правилами обязательного оформления тем.
И оставьте один вопрос.
« Последнее редактирование: Февраль 22, 2012, 20:07:31 от madmasles »



  Записан

GenoTIP [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 1
  • Online Online
  • Пол: Мужской
  • Сообщений: 48
  • Версия AutoIt: 3.3.8.0
  • «Локоть побеждает кулак, а колено побеждает ногу»
    • Награды
изменил вопрос




  Записан

Medic84 [?]

  • Администратор
  • *
  • *****
  • Репутация: 161
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 943
  • Версия AutoIt: 3.3.6.1
    • WWW
    • Награды
GenoTIP
Но правилам раздела так и не следуете.




  Записан
   
На форуме принято отмечать полезные сообщения кнопкой "Полезное сообщение"
Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.
Моя лаборатория - программы, статьи и ответы на вопросы.

GenoTIP [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 1
  • Online Online
  • Пол: Мужской
  • Сообщений: 48
  • Версия AutoIt: 3.3.8.0
  • «Локоть побеждает кулак, а колено побеждает ногу»
    • Награды
Оставил один вопрос, ответьте пожалуйста.. не могу иначе дальше задумку реализовывать, нигде нету руководств для работы с GDI как и подробных примеров..




  Записан

Kaster [?]

  • Глобальный модератор
  • *
  • *****
  • Репутация: 502
  • Online Online
  • Пол: Мужской
  • Сообщений: 3286
  • Версия AutoIt: 3.3.8.1
  • Мой Аватар, он лучший самый
    • Награды
GenoTIP
удаление сообщения и составление новой для апа темы у нас не приветствуется. учти на будущее




  Записан
Конференция посвященная AutoIt на jabber.ru - autoit@conference.jabber.ru
Как попасть на конференцию читаем тут
Файлы можете качать сюда - Файловая область
Продолжать дискуссию в теме отмеченной как "Решенная" - моветон.
Банхамером не обладаю, так что расслабьтесь ;)
Банхамером обладаю, так что не расслабляться :Ban:

GenoTIP [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 1
  • Online Online
  • Пол: Мужской
  • Сообщений: 48
  • Версия AutoIt: 3.3.8.0
  • «Локоть побеждает кулак, а колено побеждает ногу»
    • Награды
из-за ваших коллег и пришлось апать.... ответ я так и не получу походу, скорей весь свод правил скопируют сюда




  Записан

C2H5OH [?]

  • Я лично бухаю, а кто-то колется...
  • Продвинутый
  • ***
  • Репутация: 86
  • Offline Offline
  • Сообщений: 411
  • Версия AutoIt: 3.3.6.1
    • Награды
Geno,
Ваш код явно писался на скорую руку - удилить объект, а потом пытаться получить его свойства...  :wacko:
Код: AutoIt [Выделить]
    _WinAPI_DeleteObject($hBitmap);Удаляем изображение созданной функцией
    $iWidth = _GDIPlus_ImageGetWidth($hBitmap)
    $iHeight = _GDIPlus_ImageGetHeight($hBitmap)

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




  Записан

GenoTIP [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 1
  • Online Online
  • Пол: Мужской
  • Сообщений: 48
  • Версия AutoIt: 3.3.8.0
  • «Локоть побеждает кулак, а колено побеждает ногу»
    • Награды
предыдущее описание кода было более чем четким, но от этого тема понеслась в раздел "стол заказов", а на счет не аккуратного кода, я серьезно не заметил как затесалось туда
Код: AutoIt [Выделить]
 _WinAPI_DeleteObject($hBitmap);Удаляем изображение созданной функцией
суть такая в общем. Программа загружает изображение, производит "обесцвечивание" вот в этом месте
Код: AutoIt [Выделить]
    $hIA = _GDIPlus_ImageAttributesCreate()
    _GDIPlus_ImageAttributesSetOutputChannel($hIA, 1, True, 0) ; Cyan
    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, 0, 0, $iWidth, $iHeight, $hIA)
    _GDIPlus_ImageAttributesDispose($hIA)
закрывает работу прочего-прочего(как это работает так и не разобрался)
и по идее должна сохранить результат в новый файл, но как я не бился - не получилось.




  Записан

Kaster [?]

  • Глобальный модератор
  • *
  • *****
  • Репутация: 502
  • Online Online
  • Пол: Мужской
  • Сообщений: 3286
  • Версия AutoIt: 3.3.8.1
  • Мой Аватар, он лучший самый
    • Награды
GenoTIP
мне не нравится, как ты тут спекулируешь на тему несправедливых перемещений твоей темы, и, будто бы, отсутствия решения твоей проблемы в следствие этих перемещений. для комфортного пребывания на форуме ты должен был прочитать (а я искренне надеюсь, что так и есть) где четко сказано не обсуждать действия модераторов. по поводу самих перемещений, есть такое простое правило - есть проблемный код, есть проблемы с ним? в раздел для новичков. кода нет, но есть некая задача? - в стол заказов. твоя темы изначально не содержала никакого кода, и поэтому была перемещена в стол заказов. потом код появился уже после всех предупреждений, и ты искренне стал негодовать почему же тема не в том разделе. потом я перенес код обратно в раздел для новичков, ты опять стал возмущаться, что в из-за перемещений нет ответов. и самое главное, ты, почему-то, отстутствие комментариев со стороны администрации посчитал за ошибку, которую они (администрация) пытаются  всячески решить... так вот, это не так. ошибка была изначально твоя - не следование регламенту разделов. а на счет решения твоей проблемы - ни админы ни модераторы не могут такого тебе гарантировать. у них со всем другие задачи. а то что нет ответов - либо никто не знает, либо банально не хочет отвечать. поэтому жди, и учти все замечания.




  Записан

GenoTIP [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 1
  • Online Online
  • Пол: Мужской
  • Сообщений: 48
  • Версия AutoIt: 3.3.8.0
  • «Локоть побеждает кулак, а колено побеждает ногу»
    • Награды
Код: AutoIt [Выделить]
#include <Array.au3>
#Include <GDIPlus.au3>
#include <GDIP.au3>
#include <GUIConstantsEx.au3>

 _GDIPlus_Startup()
 $hGUI = GUICreate("", 200, 50)
    $hBitmap = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\ex.jpg')
    $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap);Переводим изображение в библиотеку GDIPlus
    ;$hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage);Получить графический контекст изображения
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    GUISetState()
    $hIA = _GDIPlus_ImageAttributesCreate()
    _GDIPlus_ImageAttributesSetOutputChannel($hIA, 1, True, 0) ; Cyan
    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, 200, 50, 0, 0, 200, 50, $hIA)
    _GDIPlus_ImageAttributesDispose($hIA)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(200, 50, $hGraphics)
    _GDIPlus_ImageSaveToFile($bitmap, @ScriptDir & '\white.jpg')
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_ShutDown()

$Matrix = MatrixGetColor(@ScriptDir & '\white.jpg')
_ArrayDisplay($Matrix)

Func MatrixGetColor($sImage)

   Local $hImage, $iWidth, $iHeight, $iBitmap, $hBitmap

   _GDIPlus_Startup()
   $hImage = _GDIPlus_ImageLoadFromFile($sImage)
   $iWidth = _GDIPlus_ImageGetWidth($hImage)
   $iHeight = _GDIPlus_ImageGetHeight($hImage)
   $iBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
   $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($iBitmap)

   Dim $iMatrix[$iHeight][$iWidth]

   For $H = 0 To $iHeight - 1
      For $W = 0 To $iWidth - 1
         $iMatrix[$H][$W] = '0x' & Hex(_GDIPlus_BitmapGetPixel($hBitmap, $W, $H), 6)
      Next
   Next

   _GDIPlus_ImageDispose($hImage)
   _WinAPI_DeleteObject($iBitmap)
   _WinAPI_DeleteObject($hBitmap)
   _GDIPlus_Shutdown()

   Return $iMatrix
EndFunc

Почему-то сохраняется полностю черная картинка white.jpg а не картинка с битмапом из hGUI, помогите исправить


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Февраль 28, 2012, 10:54:21 от GenoTIP »



  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
Поиск нужного индекса сылки в _IELinkGetCollection
AutoIt для новичков
TicTac 1 1299 Последний ответ Октябрь 18, 2009, 22:29:33
от Kaster
[Элементы GUI] Запрос на новую функцию: PixelChecksumBorder ()
Баг-репорты и запросы на новые функции
akoulev 2 957 Последний ответ Май 29, 2010, 18:58:17
от Redline
Выбор нужного окна
AutoIt для новичков
Marik 1 629 Последний ответ Сентябрь 25, 2010, 13:24:23
от Kaster
Остановка скрипта в IE при появлении нужного текста на странице
AutoIt для новичков
MadDog 9 875 Последний ответ Сентябрь 27, 2010, 16:10:10
от CreatoR
[Автоматизация] настройка работы консольного распаковщика для обработки нужного числа файлов
Стол заказов
Tosyk 0 825 Последний ответ Май 30, 2011, 17:58:58
от Tosyk
Содержимое между тегами (с пробелами и переходами на новую строку)
Регулярные выражения и прочее
andr_mozg 15 2223 Последний ответ Июнь 30, 2011, 19:32:51
от CreatoR
[Автоматизация] Как написать команду выключения нужного мне процесса по сети?
AutoIt для новичков
agikon 7 798 Последний ответ Июль 12, 2011, 05:17:00
от darkwhite
Ошибка в новую портативную версию Autoit
AutoIt для новичков
armenxxx1 1 265 Последний ответ Декабрь 27, 2011, 02:06:19
от CreatoR
[Мышь, клавиатура] Поочередное нажатие на одинаковые пиксели
AutoIt для новичков
deffol 5 444 Последний ответ Февраль 17, 2012, 09:19:51
от C2H5OH
Перенесено: Копируем пиксели нужного цвета на новую картинку
AutoIt для новичков
madmasles 0 105 Последний ответ Февраль 22, 2012, 19:30:48
от madmasles


Реклама

* Последние сообщения на форуме
post Сложение через or
[AutoIt для новичков] Serafim Сегодня в 14:35:00
post Re: Авторизация в одноклассниках
[Автоматизация IE и Web-интерфейса] Александр Сегодня в 14:33:42
post Re: [Элементы GUI] Нажать кнопку в скрытом окне
[AutoIt для новичков] InnI Сегодня в 14:31:49
post Re: Как заменить метку времени файла на севере
[Автоматизация IE и Web-интерфейса] eropov Сегодня в 14:11:37
post Re: Авторизация в одноклассниках
[Автоматизация IE и Web-интерфейса] Arei Сегодня в 13:24:59
post Re: Смена IP адресса
[AutoIt для новичков] Zaramot Сегодня в 13:04:33
post Re: Авторизация в одноклассниках
[Автоматизация IE и Web-интерфейса] Александр Сегодня в 12:59:21
post Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] madmasles Сегодня в 12:23:31
post [Мышь, клавиатура] Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] Nurgazy Сегодня в 12:09:36
post Re: Объясните плз, как работать с массивами ArrayAdd и прочее...
[AutoIt для новичков] madmasles Сегодня в 12:08:03

* Пользователи онлайн
  • Dot Гостей: 139
  • Dot Скрыт: 1
  • Dot Пользователей: 27
  • Dot Пользователи Online: