I need to extract each pixel color from a png image and store it in the database table;
the table has the following columns: id
, x
, y
, color
.
I did it, but I need a faster way to do this.
My code is as follows:
<?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);
?>
Don't do an insert per pixel, but store them in an array and use a mass insert in the form of
INSERT INTO table VALUES (1,1,1),(2,2,2)