|
|
|
| Имеется множество изображений, на которых изображены различные силуэты черным цветом (RGB: 0 0 0), остальная часть изображения - прозрачна (можно сделать белую...это не суть).
Требуется определить размер силуэта (x,y) на картинке. Как это можно сделать? | |
|
|
|
|
|
|
|
для: kireyev
(30.09.2011 в 07:18)
| | А размер в каких единицах? Нельзя просто подсчитать количество черных пикселей? | |
|
|
|
|
|
|
|
для: cheops
(30.09.2011 в 10:39)
| | Размеры нужны в px (ширина и высота). Если такой вариант не возможен - то наверное количество пикселей черного цвета тоже спасет... | |
|
|
|
|
|
|
|
для: kireyev
(30.09.2011 в 10:48)
| | А имеется в виду ограничивающий прямоугольник? Можно просканировать (например, средствами библиотеки GDLib) изображение в поисках крайне-левой, крайней-правой, крайне-верхней и крайне-нижних точек, разница между ними даст высоту и ширину изображения. | |
|
|
|
|
|
|
|
для: cheops
(30.09.2011 в 10:53)
| | Точно... ! Но сколько займет времени этот процесс, если изображение 1000*1000px? | |
|
|
|
|
|
|
|
для: cheops
(30.09.2011 в 10:53)
| | Не могу не поделиться решением, спасибо cheops за подсказку.
$src_front1 = imagecreatefrompng("../files/".$front1_filename);
$size_left=1000;
$size_right=0;
$size_top=1000;
$size_bottom=0;
for ($y=0; $y<1000; $y++) {
for ($x=0; $x<1000; $x++) {
if (imagecolorat($src_front1,$x,$y) == 0) {
if ($y < $size_top) { $size_top = $y; }
if ($y > $size_bottom) { $size_bottom = $y; }
if ($x < $size_left) { $size_left = $x; }
if ($x > $size_right) { $size_right = $x; }
}
}
}
echo $width = $size_right-$size_left." x ";
echo $height = $size_bottom-$size_top." px";
|
| |
|
|
|