extracting pixel color from png image

Go To StackoverFlow.com

0

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);

?>
2012-04-04 07:16
by Ionut Flavius Pogacian


1

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)
2012-04-04 07:21
by Ben F
but there are 12.000.000 record - Ionut Flavius Pogacian 2012-04-04 07:30
That's exactly why - Ben F 2012-04-04 07:32
ty, i will try this ... but i dont think i can inject 12 mils of data in a single quer - Ionut Flavius Pogacian 2012-04-04 07:36
Then you split it up into batches that do work, but anything is better than 12 million inserts - Ben F 2012-04-04 07:52
Ads