Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从png图像中提取像素颜色_Php_Image_Png - Fatal编程技术网

Php 从png图像中提取像素颜色

Php 从png图像中提取像素颜色,php,image,png,Php,Image,Png,我需要从png图像中提取每个像素颜色,并将其存储在数据库表中; 该表有以下列:id、x、y、color 我做到了,但我需要一个更快的方法 我的代码如下: <?php session_start(); ?> <meta http-equiv="refresh" content="6000" > <?php if(isset($_SESSION['inserari']))print "inserari: ".$_SESSION['inserari']; $_SES

我需要从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);

?>


不要按像素插入,而是将它们存储在一个数组中,并以

INSERT INTO table VALUES (1,1,1),(2,2,2)

但是有12.000.000个记录,我会试试这个。。。但是我不认为我可以在一个查询中注入12 mil的数据,如果你把它分成可以工作的批,但是任何东西都比1200万次插入要好。