两个周末以来,我一直在研究Apple Photos macOS应用程序,但我陷入了困境。我希望StackOverflow的聪明人可以解决这个问题。
我不知道的东西:
我知道的事情:
答案 0 :(得分:0)
在尝试渲染照片马赛克时,我也偶然发现了这个问题...
然后我很幸运地找到了master
图片和相应的小样,
让我四处寻找,搜索与文件名中嵌入的数字的十进制和十六进制等效。
这是我想出的(假设您正在搜索名为NAME
的人):
SELECT
printf('%04x', mr.modelId) AS tileId
FROM
RKModelResource mr, RKFace f, RKPerson p
WHERE
f.modelId = mr.attachedModelId
AND f.personId = p.modelId
AND p.displayName = NAME
此select
以十六进制打印出所有RKModelResource.modelIds
,用于命名您要搜索的相应facetiles
。现在所需要做的就是通往小样的完整路径。
因此,一个完整的bash
脚本将一个人的所有这些小面复制(复制到当前目录中的本地文件夹out
中)可以是:
#!/bin/bash
set -eEu
PHOTOS_PATH=$HOME/Pictures/Photos\ Library.photoslibrary
DB_PATH=$PHOTOS_PATH/database/photos.db
echo $NAME
mkdir -p out/$NAME
TILES=( $(sqlite3 "$DB_PATH" "SELECT printf('%04x', mr.modelId) AS tileId FROM RKModelResource mr, RKFace f, RKPerson p WHERE f.modelId = mr.attachedModelId AND f.personId = p.modelId AND p.displayName='"$NAME"'") )
for TILE in ${TILES[@]}; do
FOLDER=${TILE:0:2}
SOURCE="$PHOTOS_PATH/resources/media/face/$FOLDER/00/facetile_$TILE.jpeg"
[[ -e "$SOURCE" ]] || continue
TARGET=out/$NAME/$TILE.jpeg
[[ -e "$TARGET" ]] && continue
cp "$SOURCE" "$TARGET" || :
done