Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обрезка bitmap по содержимому. (http://www.flasher.ru/forum/showthread.php?t=125849)

Котяра 03.06.2009 18:14

Обрезка bitmap по содержимому.
 
В общем вопрос такой ( знаю, что алгоритм не сложный, но сегодня напал на меня мозговой ступор)
Есть некая битмапа - например 100 на 100, посредине (также для примера) нарисован кружочек радиусом 10. нужно обрезать битмапу по содержимому . т.е. получить битмапу
20 на 20 с кружком посередине.
Считать точки с alpha=0 - пустыми.

VVall 03.06.2009 18:18

Так задача в обрезке или в нахождении размеров и координат области с кружком для вырезания?

Котяра 03.06.2009 18:39

Цитата:

Сообщение от VVall (Сообщение 825512)
Так задача в обрезке или в нахождении размеров и координат области с кружком для вырезания?

Это одно и то же.
Нужно найти минимальную область за пределами которой все пиксели с альфой=0;

etc 03.06.2009 18:40

ColorTransform + getColorBoundsRect

Котяра 03.06.2009 19:03

Цитата:

Сообщение от __etc (Сообщение 825518)
ColorTransform + getColorBoundsRect

Сенки больший, а то я начал уже делать попиксельную проверку в 4 этапа)
решение:
Цитата:

getColorBoundsRect () метод
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle

Язык версии : ActionScript 3.0
Версии среды выполнения: 1.0 9

Определяет прямоугольный участок, полностью охватывающий все пикселы заданного цвета в пределах растрового изображения (если параметру findColor присвоено значение true), либо полностью охватывает все пикселы, не содержащие заданный цвет (если параметру findColor присвоено значение false).

Например, если имеется исходное изображение и требуется определить прямоугольник изображения, содержащий ненулевой альфа-канал, передайте в качестве параметров {mask: 0xFF000000, color: 0x00000000}. Если параметру findColor задано значение true, в пределах всего изображения ведется поиск границ с пикселами, для которых (value & mask) == color (где value — это значение цвета пиксела). Если параметру findColor задано значение false, в пределах всего изображения ведется поиск границ пикселов, для которых (value & mask)!= color (где value — это значение цвета пиксела). Чтобы определить белое пространство вокруг изображения, передайте {mask: 0xFFFFFFFF, color: 0xFFFFFFFF}, чтобы найти границы небелых пикселов.

Параметры
mask:uint — Шестнадцатеричное значение, указывающее рассматриваемые биты цвета ARGB. Значение цвета объединяется с данным шестнадцатеричным значением с использованием оператора & (побитовое И).

color:uint — Шестнадцатеричное значение, задающее цвет ARGB для соответствия (если findColor имеет значение true) или не соответствия (если findColor имеет значение false).

findColor:Boolean (default = true) — Если задано значение true, то возвращаются границы значения цвета в изображения. Если задано значение false, возвращаются границы области изображения, в которой этого цвета нет.

Возвращает
Rectangle — Область изображения, заполненная заданным цветом.

iflamberg 03.06.2009 21:13

дык это он только прямоугольник определит, не?

iNils 03.06.2009 22:32

Цитата:

Сообщение от iflamberg (Сообщение 825580)
дык это он только прямоугольник определит, не?

А вы можете сделать не прямоугольный битмап?

iflamberg 03.06.2009 22:38

эм, я не понял задачу, подумал, что нужно что-то типа маски.


Часовой пояс GMT +4, время: 17:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.