2012-05-26 5 views
3

У меня есть проблема .. Существует некоторая картина, как это:Получить данные радара с изображения

enter image description here

и я хочу, чтобы добавить новую резолюцию, фон, и лучшего качества (Сглаживание) к этому радарному изображению. Как я могу получить данные радара с этого изображения с помощью PHP-скрипта?

Я уже этот код, но выход Isnt лучший: S вы можете увидеть здесь:

enter image description here

<? 
$im = imagecreatefromjpeg('a.jpg'); 
$f1 = imagecolorallocate($im, 39, 78, 231); 
$a = imagecreatetruecolor (520, 370); 
$red = imagecolorallocate($a, 39,78,231); 
for($x =130;$x<520;$x++) 
{ 
for($y = 130; $y<370;$y++) 
{ 
    $rgb = imagecolorat($im, $x, $y); 
    $r = ($rgb >> 16) & 0xFF; 
    $g = ($rgb >> 8) & 0xFF; 
    $b = $rgb & 0xFF; 

    $red = imagecolorallocate($a, $r,$g,$b); 
    //echo $r.$  g.$b."|"; 

    if(($r < 100 && $r > 0) && ($g < 150 && $g > 0) && ($b < 255 && $b > 150)) 
     imagesetpixel($a, $x, $y, $red); 
    if(($r < 100 && $r > 0) && ($g < 255 && $g > 130) && ($b < 255 && $b > 0)) 
     imagesetpixel($a, $x, $y, $red); 
    if(($r < 200 && $r > 100) && ($g < 255 && $g > 180) && ($b < 80 && $b > 0)) 
     imagesetpixel($a, $x, $y, $red); 
    if(($r < 255 && $r > 0) && ($g < 255 && $g > 0) && ($b < 50 && $b > 0)) 
     imagesetpixel($a, $x, $y, $red); 
    if(($r < 255 && $r > 200) && ($g < 255 && $g > 70) && ($b < 70 && $b > 0)) 
     imagesetpixel($a, $x, $y, $red); 
    if(($r < 255 && $r > 200) && ($g < 100 && $g > 0) && ($b < 70 && $b > 0)) 
     imagesetpixel($a, $x, $y, $red); 
    if(($r < 120 && $r > 0) && ($g < 50 && $g > 0) && ($b < 50 && $b > 0)) 
     imagesetpixel($a, $x, $y, $red); 
} 
} 
//$rgb = imagecolorat($im, 550, 465); 
//$r = ($rgb >> 16) & 0xFF; 
//$g = ($rgb >> 8) & 0xFF; 
//$b = $rgb & 0xFF; 
//echo "$r $g $b"; 
header('Content-Type: image/png'); 
imagepng($a); 
?> 
+1

Nem is tudtam, hogy itt magyarok is vannak: D Но так или иначе, изображение у вас есть, у вас есть версия качества png для обработки? Потому что тогда вы можете просто получить цвета с ключа карты и получить эти цвета из остальной части изображения и скопировать их на другой фон, но на изображении jpeg цвета не прочны и из-за сжатия. – 19greg96

+0

Что вы подразумеваете под «радарными деталями»? – dAm2K

+3

'... с PHP-скриптом' - это плохой старт. PHP - это * не * хороший язык для этого. И если вы не знаете, как это сделать вообще, я бы посоветовал вам в принципе отказаться от этого. То, о чем вы говорите, - это очень продвинутое манипулирование изображениями, и новичок (или даже не такой начинающий) будет изо всех сил пытаться извлечь какие-либо значимые данные из такого образа. Если вам нужно, я бы сказал, что лучше всего попытаться [vectorise] (http://www.google.co.uk/search?q=vectorise+image) и заложить объекты радара над другим изображением. – DaveRandom

ответ

2

заменить kép.jpg с изображением. Первая попытка. Я думаю, я могу подстроить вещи, чтобы приблизиться.

Вторая попытка: пол, кажется, намного лучше, чем круглый.

3-я попытка: добавлено 2 фильтра к коду.

<?php 
header('content-type: image/png'); 
//header('content-type: text/plain'); 


$im = imagecreatefromjpeg ('images/a.jpg'); 
list($width, $height, $type, $attr) = getimagesize('images/a.jpg'); 

$im2 = imagecreate($width, $height); 

$x = 540; 
$y = 353; 

$colors = array(); 


$num = 100; 
$num2 = 15 * 11 * $num; 
$num3 = 100; 

$num4 = 65; 
$num5 = 15 * 11 * $num4; 
$num6 = 65; 

imagecolorallocate($im2, 255, 255, 255); 
for ($k = 0; $k < 7; $k ++) { 
    $ar = 0; 
    $ag = 0; 
    $ab = 0; 

    for ($i = 0; $i < 15; $i ++) { 
     for ($j = 0; $j < 11; $j ++) { 
      $tc = imagecolorat($im, $x + $i, $y + $j + $k * 18); 
      $ar += ($tc >> 16) & 0xFF; 
      $ag += ($tc >> 8) & 0xFF; 
      $ab += $tc & 0xFF; 
     } 
    } 

    $c = new STDClass(); 
    if ($k == 0) { 
     $c->r = floor ($ar/$num5) * $num4; 
     $c->g = floor ($ag/$num5) * $num4; 
     $c->b = floor ($ab/$num5) * $num4; 
    } else { 
     $c->r = floor ($ar/$num2) * $num; 
     $c->g = floor ($ag/$num2) * $num; 
     $c->b = floor ($ab/$num2) * $num; 
    } 

    $c->c = imagecolorallocate($im2, $c->r, $c->g, $c->b); 

    $colors[] = $c; 

    imagefilledrectangle($im2, 0, $k * 11, 15, $k * 11 + 11, $c->c); 
} 


$pixelmap = array(); 
$pm2 = array(); 
for ($i = 0; $i < $width; $i ++) { 
    $pixelmap[$i] = array(); 
    $pm2[$i] = array(); 
    for ($j = 0; $j < $height; $j ++) { 
     $pixelmap[$i][$j] = false; 
     $pm2[$i][$j] = false; 
     $c = imagecolorat($im, $i, $j); 

     $r = ($c >> 16) & 0xFF; 
     $g = ($c >> 8) & 0xFF; 
     $b = $c & 0xFF; 

     $r = floor ($r/$num3) * $num3; 
     $g = floor ($g/$num3) * $num3; 
     $b = floor ($b/$num3) * $num3; 

     $r2 = floor ($r/$num6) * $num6; 
     $g2 = floor ($g/$num6) * $num6; 
     $b2 = floor ($b/$num6) * $num6; 


     for ($k = 0; $k < 7; $k ++) { 
      $colorOK = true; 
      if ($k == 0) { 
       if ($r2 != $colors[$k]->r) { $colorOK = false; } 
       if ($g2 != $colors[$k]->g) { $colorOK = false; } 
       if ($b2 != $colors[$k]->b) { $colorOK = false; } 
      } else { 
       if ($r != $colors[$k]->r) { $colorOK = false; } 
       if ($g != $colors[$k]->g) { $colorOK = false; } 
       if ($b != $colors[$k]->b) { $colorOK = false; } 
      } 
      if ($colorOK) { break; } 
     } 


     if ($k < 7) { // else no mathing color was found 
      $pixelmap[$i][$j] = $colors[$k]->c; 
      //imagesetpixel($im2, $i, $j, $pixelmap[$i][$j]); 
     } 
    } 
} 


for ($i = 1; $i < $width - 1; $i ++) { 
    for ($j = 1; $j < $height - 1; $j ++) { 
     if ($pixelmap[$i][$j] !== false) { 
      if ($pixelmap[$i ][$j - 1] !== false || 
       $pixelmap[$i + 1][$j - 1] !== false || 
       $pixelmap[$i + 1][$j ] !== false || 
       $pixelmap[$i + 1][$j + 1] !== false || 
       /*$pixelmap[$i ][$j + 1] !== false ||*/ 
       $pixelmap[$i - 1][$j + 1] !== false || 
       $pixelmap[$i - 1][$j ] !== false) { 
       //imagesetpixel($im2, $i, $j, $pixelmap[$i][$j]); 
      } else { 
       $pixelmap[$i][$j] = false; 
      } 
      $pm2[$i][$j] = $pixelmap[$i][$j]; 
     } else { 
      $surroundColors = array(); 
      if (isset($surroundColors[$pixelmap[$i - 1][$j - 1]])) { $surroundColors[$pixelmap[$i - 1][$j - 1]]++; } else { $surroundColors[$pixelmap[$i - 1][$j - 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i ][$j - 1]])) { $surroundColors[$pixelmap[$i ][$j - 1]]++; } else { $surroundColors[$pixelmap[$i ][$j - 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i + 1][$j - 1]])) { $surroundColors[$pixelmap[$i + 1][$j - 1]]++; } else { $surroundColors[$pixelmap[$i + 1][$j - 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i + 1][$j ]])) { $surroundColors[$pixelmap[$i + 1][$j ]]++; } else { $surroundColors[$pixelmap[$i + 1][$j ]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i + 1][$j + 1]])) { $surroundColors[$pixelmap[$i + 1][$j + 1]]++; } else { $surroundColors[$pixelmap[$i + 1][$j + 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i ][$j + 1]])) { $surroundColors[$pixelmap[$i ][$j + 1]]++; } else { $surroundColors[$pixelmap[$i ][$j + 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i - 1][$j + 1]])) { $surroundColors[$pixelmap[$i - 1][$j + 1]]++; } else { $surroundColors[$pixelmap[$i - 1][$j + 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i - 1][$j ]])) { $surroundColors[$pixelmap[$i - 1][$j ]]++; } else { $surroundColors[$pixelmap[$i - 1][$j ]] = 1; }; 

      $c = array_keys ($surroundColors); 
      $pm2[$i][$j] = ($c[0] == false ? false : $c[0]); 
      //imagesetpixel($im2, $i, $j, $c[0]); 
     } 
    } 
} 

$pixelmap = $pm2; 
for ($i = 1; $i < $width - 1; $i ++) { 
    for ($j = 1; $j < $height - 1; $j ++) { 
     if ($pixelmap[$i][$j] !== false) { 
      if ($pixelmap[$i ][$j - 1] !== false || 
       $pixelmap[$i + 1][$j - 1] !== false || 
       $pixelmap[$i + 1][$j ] !== false || 
       $pixelmap[$i + 1][$j + 1] !== false || 
       /*$pixelmap[$i ][$j + 1] !== false ||*/ 
       $pixelmap[$i - 1][$j + 1] !== false || 
       $pixelmap[$i - 1][$j ] !== false) { 
       imagesetpixel($im2, $i, $j, $pixelmap[$i][$j]); 
      } else { 
       $pixelmap[$i][$j] = false; 
      } 
     } else { 
      $surroundColors = array(); 
      if (isset($surroundColors[$pixelmap[$i - 1][$j - 1]])) { $surroundColors[$pixelmap[$i - 1][$j - 1]]++; } else { $surroundColors[$pixelmap[$i - 1][$j - 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i ][$j - 1]])) { $surroundColors[$pixelmap[$i ][$j - 1]]++; } else { $surroundColors[$pixelmap[$i ][$j - 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i + 1][$j - 1]])) { $surroundColors[$pixelmap[$i + 1][$j - 1]]++; } else { $surroundColors[$pixelmap[$i + 1][$j - 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i + 1][$j ]])) { $surroundColors[$pixelmap[$i + 1][$j ]]++; } else { $surroundColors[$pixelmap[$i + 1][$j ]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i + 1][$j + 1]])) { $surroundColors[$pixelmap[$i + 1][$j + 1]]++; } else { $surroundColors[$pixelmap[$i + 1][$j + 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i ][$j + 1]])) { $surroundColors[$pixelmap[$i ][$j + 1]]++; } else { $surroundColors[$pixelmap[$i ][$j + 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i - 1][$j + 1]])) { $surroundColors[$pixelmap[$i - 1][$j + 1]]++; } else { $surroundColors[$pixelmap[$i - 1][$j + 1]] = 1; }; 
      if (isset($surroundColors[$pixelmap[$i - 1][$j ]])) { $surroundColors[$pixelmap[$i - 1][$j ]]++; } else { $surroundColors[$pixelmap[$i - 1][$j ]] = 1; }; 

      $c = array_keys ($surroundColors); 
      //$pixelmap[$i][$j] = $c[0]; 
      imagesetpixel($im2, $i, $j, $c[0]); 
     } 
    } 
} 



imagepng ($im2); 
?> 
+1

Хорошая работа, большое вам спасибо!:) я должен сделать немного апрелю Плавность и сделан :) –

+1

хотят, просто не дайте ему истребить н: D –

+1

подключенных в очень ебать-бар имеет –

Смежные вопросы