문제 설명
png 이미지에서 픽셀 색상 추출 (extracting pixel color from png image)
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);
?>
참조 솔루션
방법 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)
(by Ionut Flavius Pogacian、Ben F)