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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Определение размера части изображения
 
 автор: kireyev   (30.09.2011 в 07:18)   письмо автору
 
 

Имеется множество изображений, на которых изображены различные силуэты черным цветом (RGB: 0 0 0), остальная часть изображения - прозрачна (можно сделать белую...это не суть).
Требуется определить размер силуэта (x,y) на картинке. Как это можно сделать?

  Ответить  
 
 автор: cheops   (30.09.2011 в 10:39)   письмо автору
 
   для: kireyev   (30.09.2011 в 07:18)
 

А размер в каких единицах? Нельзя просто подсчитать количество черных пикселей?

  Ответить  
 
 автор: kireyev   (30.09.2011 в 10:48)   письмо автору
 
   для: cheops   (30.09.2011 в 10:39)
 

Размеры нужны в px (ширина и высота). Если такой вариант не возможен - то наверное количество пикселей черного цвета тоже спасет...

  Ответить  
 
 автор: cheops   (30.09.2011 в 10:53)   письмо автору
 
   для: kireyev   (30.09.2011 в 10:48)
 

А имеется в виду ограничивающий прямоугольник? Можно просканировать (например, средствами библиотеки GDLib) изображение в поисках крайне-левой, крайней-правой, крайне-верхней и крайне-нижних точек, разница между ними даст высоту и ширину изображения.

  Ответить  
 
 автор: kireyev   (30.09.2011 в 10:59)   письмо автору
 
   для: cheops   (30.09.2011 в 10:53)
 

Точно... ! Но сколько займет времени этот процесс, если изображение 1000*1000px?

  Ответить  
 
 автор: kireyev   (30.09.2011 в 12:03)   письмо автору
 
   для: 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";

  Ответить  
Rambler's Top100
вверх

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