php 读取ipa图标,php解析ipa

/**

* @param $targetFile

* @return mixed

* @throws IOException

* @throws PListException

* @throws DOMException

*/

public static function ipa($targetFile): mixed

{

//临时目录存放info.plist

$storage_path = runtime_path() . 'ipa' . DS . time() . DS;

$zip = new \ZipArchive();

$zip->open($targetFile);

$zip->extractTo($storage_path);

$plist_index = $zip->locateName('Info.plist', \ZIPARCHIVE::FL_NOCASE | \ZIPARCHIVE::FL_NODIR);

$plist_path = $zip->getNameIndex($plist_index);

$zip->close();

$plist_path = explode("/", $plist_path);

//拼接logo的路径

//todo logo名称如何改为变量

$logo_path = $storage_path . $plist_path[0] . '/' . $plist_path[1] . '/AppIcon40x40@2x.png';

// 拼接plist文件完整路

$fp = $storage_path . $plist_path[0] . '/' . $plist_path[1] . '/Info.plist';

// 获取plist文件内容

$content = file_get_contents($fp);

// 解析plist成数组

$ipa = new CFPropertyList();

$ipa->parse($content);

$ipaInfo = $ipa->toArray();

//包的大小(字节)

$ipaInfo['PACKAGE_SIZE'] = filesize($targetFile);

//解密logo并编码为base64

$parser = new \IosPngParser\Parser();

$decryptedPngFile = $storage_path . $plist_path[0] . '/' . $plist_path[1] . '/AppIcon40x40@2x_tmp.png';

$parser::fix($logo_path, $decryptedPngFile);

$ipaInfo['BASE64_LOGO'] = self::base64EncodeImage($decryptedPngFile);

//删除刚才的临时文件(:小心删除系统:)

exec('rm -rf ' . $storage_path);

return $ipaInfo;

}

/**

* @param $image_file

* @return string

* 图片转为base64编码

*/

private static function base64EncodeImage($image_file): string

{

$image_info = getimagesize($image_file);

$image_data = fread(fopen($image_file, 'r'), filesize($image_file));

return 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值