0

我需要从 png 图像中提取每个像素颜色并将其存储在数据库表中;该表有以下列:id, x, y, color.

我做到了,但我需要一种更快的方法来做到这一点。

我的代码如下:

<?php

session_start();

?>
<meta http-equiv="refresh" content="6000" >
<?php

if(isset($_SESSION['inserari']))print "inserari: ".$_SESSION['inserari'];
$_SESSION['inserari']=0;
require_once("../data-base-connection.php");
$im = ImageCreateFromPng("http://www.medievalbattlefield.com/harta-mod-1/x.png");

$maxo=4001;
$maxv=2235;
$result=mysql_query("
select * 
from `map_4001_2235` 
order by `id` desc
limit 1
");
$n=mysql_num_rows($result);
$id=0;
$cv=0;
$co=0;


if($n==1)
{
  while($row=mysql_fetch_array($result))
  {
    print " id ".$id=$row['id'];
    print " cx ".$cv=$row['x'];
    print " cy ".$co=$row['y'];
  }
  $co++;
  if($co==$maxo+1)$co=0;
}

for($a=$cv;$a<=$maxv;$a++)
{
  for($b=$co;$b<=$maxo;$b++)
  {

    //print "$a $b";
    //if(($b==1000)||($b==2000)||($b==3000)||($b==4000))print " indicator: ".$b;
    $id++;
    $_SESSION['inserari']++;
    $rgb = ImageColorAt($im, $b, $a);
    $c=dechex($rgb);

    mysql_query("
INSERT INTO `map_4001_2235` (
`id` ,
`x` ,
`y`,
`color`
)
VALUES (
'$id' ,  '$a',  '$b', '$c'
);
");
  }
  $co=0;
}

mysql_close($connection);

?>
4

1 回答 1

1

不要对每个像素进行插入,而是将它们存储在一个数组中并使用以下形式的大规模插入

INSERT INTO table VALUES (1,1,1),(2,2,2)
于 2012-04-04T07:21:11.793 回答