当前位置: > > > PHP - 免费下载乐拍通照片(中等清晰度)

PHP - 免费下载乐拍通照片(中等清晰度)

尊重他人的劳动成果
乐园内聘请的摄影师都是较为专业的,具有一定的专业技能和拍摄技巧,使用的摄影设备也是较高级的,所有的这些都是为了能拍摄出优秀的照片,留下你在迪士尼乐园的美好瞬间,成为你一辈子的记忆。
本文只在与技术研究,还是希望大家通过正规渠道购买下载想要的照片。当然,如果以此牟利更是要严加抵制。

一、乐拍通介绍

在迪士尼游玩时,如果我们同卡通人物合影,迪士尼摄影师会使用他们的单反相机免费为我们拍照。或者乘坐项目的时候,也会有一些官方摄影留下的照片。这些照片我们可以通过乐拍通APP或者乐拍通网站下载。
当然下载照片是要收费的:一张照片 59 元。或者花 369 购买乐拍通一卡通,可以无限制的下载照片。

二、淘宝上的乐拍通下载服务

想要下载照片,很多人觉得单张59不划算,打包369又贵了些。于是淘宝上催生了许多提供乐拍通照片下载服务的卖家,让我们可以使用比较实惠的价格得到所有的照片。根据价格不同,他们实现的方式主要分为如下两种:

1,120多元

这个是通过拼单实现的。由于一张一卡通可以同时绑定多张乐拍通卡,卖家那边有大量游客需要进行拼单,因此可以很迅速地找到合适的卡片。卖家那边拼单结束后,我们这边就能自行下载乐拍通卡内的所有高清相片的原图了。
  • 卖家成本:每3人就需要一张一卡通
  • 如何拿到照片:直接在官方App内下载(其实和我们自行购买是一样的)
  • 照片质量:单反高清原图(像素4600x3450,约1~4MB大小)

2,30多元

这种就是本文要介绍的方法。其实拿到的就是宣传照片,也就是我们使用App预览时去掉表面覆盖的遮罩层,得到下方的宣传图,所以清晰度肯定很一般。
  • 卖家成本:0
  • 如何拿到照片:卖家下好照片后发到邮箱中。
  • 照片质量:一般清晰(像素1024x768,约100KB大小)

三、免费下载照片教程

这里下载的是普通清晰度的照片,也就是上面说的淘宝卖30多块钱的那种。


1,准备工作

(1)设备我这里使用的是:一部 iPhone 手机,一台 Mac 电脑。
(2)电脑上安装抓包软件:CharlesCharles 具体的用法参考我之前的文章:Swift - 网络抓包工具Charles使用介绍1

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


(2)使用介绍
将前面我们下下来的包放在 input 文件夹中。访问这个 php 文件,程序执行完毕后,最终的图片会保存到 output 文件夹中。
评论1
  • 1楼
    2017-04-21 20:05
    decem

    技术服务生活,很好很强大

    站长回复

    多谢夸奖:)