<?php
namespace imcat;
// extPano
class extPano{
//var $xxx;
// 全景切图 krcut
// 参数太长分批? 任务排队?
static function krCut($tab, $make='umake', $exp=1800){
// 设置执行超时时长
@ini_set("max_execution_time", $exp);
@ini_set("request_terminate_timeout", $exp); // 兼容php-fpm
$op = KRPATH."/$make.".(IS_WIN?'bat':'sh');
//die("$op $tab"); // "/xxx/umake.bat /dir/a.jpg /dir/b.jpg"
$res = exec("$op $tab");
return $res;
}
// 合并百度全景图, z=0-5, bdJoin
static function bdJoin($sid, $z=3, $d='mapsv0'){
$url0 = "https://$d.bdimg.com/?qt=pdata&sid=$sid&pos=0_0&z=$z";
$x = pow(2, ($z-1));
$a = $z>2 ? ($x/2)-1 : 0;
$b = $z>1 ? ($x-1) : 0; echo "<b>z=$z: {$a}_{$b}</b><br>";
$cw = [0=>100, 1=>512];
$ch = [0=>75, 1=>256];
$w = isset($cw[$z]) ? $cw[$z] : ($b+1) * 512;
$h = isset($ch[$z]) ? $ch[$z] : ($a+1) * 512;
$arr = [];
$img = imagecreatetruecolor($w, $h); //新建一个真彩图像
for($i=0; $i<=$a;$i++){
for($j=0;$j<=$b;$j++){
$k = "{$i}_{$j}"; echo "$k, ";
$url = str_replace('0_0', $k, $url0);
$data = comHttp::doGet($url);
$itm = imagecreatefromstring($data);
imagecopy($img, $itm, $j*512, $i*512, 0, 0, 512, 512);
//$arr[$i][$j] = $data;
} echo "<br>";
} //dump($arr);
return $img;
}
//
function xxx(){
//@exec("ifconfig -a", $this->return_array);
return $this->xxx;
}
}
/*
---------------------------------
### 全景切图 demo
# tab
$rp = 'E:/dir/path';
$tab = "$rp/quan-img1.jpg $rp/quan-img2.jpg";
$res = extPano::krCut($tab);
var_dump($res);
# op
win : umake.bat
linux : umake.sh
---------------------------------
### 百度全景图分析
* demo
$img = extPano::bdJoin($sid, $zoom);
imagejpeg($img, "E:/Webs/pano/org-test/pano-baidu/$sid-z$zoom.jpg");
* 样例图分析
- https://mapsv0.bdimg.com/?qt=pdata&sid=09006600121707221510490468P&pos=0_0&z=0
- https://mapsv0.bdimg.com/?qt=pdata&sid=09006600121707221510490468P&pos=0_0&z=1
- https://mapsv0.bdimg.com/?qt=pdata&sid=09006600121707221510490468P&pos=0_1&z=2 2^1=2
- https://mapsv0.bdimg.com/?qt=pdata&sid=09006600121707221510490468P&pos=1_3&z=3 2^2=4
- https://mapsv0.bdimg.com/?qt=pdata&sid=09006600121707221510490468P&pos=3_7&z=4 2^3=8
- https://mapsv0.bdimg.com/?qt=pdata&sid=09006600121707221510490468P&pos=7_15&z=5 2^4=16
- 128 + 32 + 8 + 2 + 2
* 域名和参数
- 域名:mapsv0.bdimg.com 或 mapsv1.bdimg.com,这个应该是cdn域名
- sid:场景id,打开任意全景图,从地址栏复制出来
- pos图片切片位置,与z缩放级别同时使用,对应如下
* z缩放级别
- 一共6个级别:从0-5
- pos=0_0&z=0 缩略图
- pos=0_0&z=1 最小的全景图
- pos=0_1&z=2 由0_0, 0_1 共2幅 组成的全景图
- pos=1_3&z=3 由0_0 ~ 1_3 共2x4幅 组成的全景图
- pos=3_7&z=4 由0_0 ~ 3_7 共4x8幅 组成的全景图
- pos=7_15&z=5 由0_0 ~ 7_15 共8x16幅 组成的全景图
---------------------------------
*/