PHP - 免费下载乐拍通照片(中等清晰度)
作者:hangge | 2017-03-04 08:10
尊重他人的劳动成果
乐园内聘请的摄影师都是较为专业的,具有一定的专业技能和拍摄技巧,使用的摄影设备也是较高级的,所有的这些都是为了能拍摄出优秀的照片,留下你在迪士尼乐园的美好瞬间,成为你一辈子的记忆。
本文只在与技术研究,还是希望大家通过正规渠道购买下载想要的照片。当然,如果以此牟利更是要严加抵制。
乐园内聘请的摄影师都是较为专业的,具有一定的专业技能和拍摄技巧,使用的摄影设备也是较高级的,所有的这些都是为了能拍摄出优秀的照片,留下你在迪士尼乐园的美好瞬间,成为你一辈子的记忆。
本文只在与技术研究,还是希望大家通过正规渠道购买下载想要的照片。当然,如果以此牟利更是要严加抵制。
一、乐拍通介绍
在迪士尼游玩时,如果我们同卡通人物合影,迪士尼摄影师会使用他们的单反相机免费为我们拍照。或者乘坐项目的时候,也会有一些官方摄影留下的照片。这些照片我们可以通过乐拍通APP或者乐拍通网站下载。
当然下载照片是要收费的:一张照片 59 元。或者花 369 购买乐拍通一卡通,可以无限制的下载照片。
二、淘宝上的乐拍通下载服务
想要下载照片,很多人觉得单张59不划算,打包369又贵了些。于是淘宝上催生了许多提供乐拍通照片下载服务的卖家,让我们可以使用比较实惠的价格得到所有的照片。根据价格不同,他们实现的方式主要分为如下两种:
1,120多元
这个是通过拼单实现的。由于一张一卡通可以同时绑定多张乐拍通卡,卖家那边有大量游客需要进行拼单,因此可以很迅速地找到合适的卡片。卖家那边拼单结束后,我们这边就能自行下载乐拍通卡内的所有高清相片的原图了。
- 卖家成本:每3人就需要一张一卡通
- 如何拿到照片:直接在官方App内下载(其实和我们自行购买是一样的)
- 照片质量:单反高清原图(像素4600x3450,约1~4MB大小)
2,30多元
这种就是本文要介绍的方法。其实拿到的就是宣传照片,也就是我们使用App预览时去掉表面覆盖的遮罩层,得到下方的宣传图,所以清晰度肯定很一般。
- 卖家成本:0
- 如何拿到照片:卖家下好照片后发到邮箱中。
- 照片质量:一般清晰(像素1024x768,约100KB大小)
三、免费下载照片教程
这里下载的是普通清晰度的照片,也就是上面说的淘宝卖30多块钱的那种。
1,准备工作
(1)设备我这里使用的是:一部 iPhone 手机,一台 Mac 电脑。
2,下载原始文件
(1)设置手机代理,让其所有的网络请求都能被 Charles 拦截。
(2)打开乐拍通,点击想要的照片,会发现 Charles 上有数据包出现,类似下面的包就是我们需要的照片(请求地址是 www.disneyphotopass.com.cn,大概大小 100k 左右)。右键save response 保存到本地(这些包我们后面还要处理下才是最终照片)。

(3)当然我们也可以先在手机上把所有照片点一遍,然后电脑上点文件夹统一保存下来。

3,文件转换
这些包内容由两部分组成,头部是是一张广告小图(我们要将其剔除)。后面剩余部分就是我们需要的真实图片。
(1)这里我使用 php 写了一个转换程序。
转换原理是先获取开头的标记(包数据的前三个字节),找到这个标记第二次出现的位置, 将从这个位置起一直到结束的部分给截取出来并保存。
<?
//原始文件转换为图片
function convert($input) {
$file_path = "input/".$input;
//判断文件是否存在
if(file_exists($file_path)){
$fp = fopen($file_path,"r");
$str = fread($fp,filesize($file_path));//指定读取大小,这里把整个文件内容读取出来
//获取文件前三个字符
$head = substr($str,0,3);
//获取这三个字符第二次出现的位置
$secondPos = strpos($str,$head,10);
//截取剩余部分的内容
$out = substr($str,$secondPos);
//生成文件
$myfile = fopen("output/".$input.".jpg", "w") or die("Unable to open file!");
fwrite($myfile, $out);
fclose($myfile);
echo "文件生成成功!";
}
}
//遍历input文件夹下的所有文件
$mydir = dir("input");
echo "<ul>\n";
while($file = $mydir->read()) {
if( ($file!=".") AND ($file!="..")) {
echo "<li>$file</li>\n";
//将原始文件转化为图片
convert($file);
}
}
echo "</ul>\n";
$mydir->close();
?>
将前面我们下下来的包放在 input 文件夹中。访问这个 php 文件,程序执行完毕后,最终的图片会保存到 output 文件夹中。

全部评论(1)
技术服务生活,很好很强大
站长回复:多谢夸奖:)