skip to content
Logo 三七の小站

自动拍照

/ 3 min read

自动控制手机拍照 及 电脑截图 1..修改端口

adb -s CB512EJYYN tcpip 5555

2..脚本

#!/bin/bash
# 相机应用的包名
CAMERA_PACKAGE="com.sonyericsson.android.camera"
SCREENSHOT_DIR="/Users/macm2/Documents/日记"
# FTP server details
FTP_SERVER="192.168.2.65"
FTP_PORT=7275
REMOTE_DIR="/device/DCIM/100ANDRO"
LOCAL_DIR="/Users/macm2/Documents/日记/拍照"
while true; do
date +"%Y-%m-%d %H:%M:%S"
# 记录当前时间
START_TIME=$(date +%s)
# 亮屏
screen_state=$(adb -s 192.168.2.65:5555 shell "dumpsys window policy | grep 'screenState='")
if [[ $screen_state == *"screenState=2"* ]]; then
echo "屏幕已点亮"
else
echo "屏幕未点亮"
echo 亮屏
adb -s 192.168.2.65:5555 shell input keyevent 26
# echo sleep 3
sleep 3
fi
# 检查相机应用是否在运行
if ! adb -s 192.168.2.65:5555 shell dumpsys activity top | grep -q "TASK com.sonyericsson.android.camera"; then
# 如果不在运行,则进入拍照模式
echo 进入拍照模式
adb -s 192.168.2.65:5555 shell am start -a android.media.action.IMAGE_CAPTURE
# 等待直到照片被拍摄,这里我们简单地等待5秒
# echo sleep 3
sleep 3
fi
# 模拟点击快门按钮
echo 快门
adb -s 192.168.2.65:5555 shell input keyevent 24
# 等待照片保存完成
# echo sleep 3
sleep 3
# 获取当前时间戳作为文件名
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
# 构建完整的文件路径
FILEPATH="$SCREENSHOT_DIR/$TIMESTAMP.png"
# 执行截图并保存
screencapture -x "$FILEPATH"
echo 熄屏
adb -s 192.168.2.65:5555 shell input keyevent 26
lftp -c "open -u anonymous,anonymous $FTP_SERVER:$FTP_PORT; mirror $REMOTE_DIR $LOCAL_DIR"
# 计算本次循环的实际用时
ELAPSED_TIME=$(( $(date +%s) - START_TIME ))
echo 本轮耗时:$ELAPSED_TIME
# 计算还需要等待多少时间才能达到60秒
WAIT_TIME=$((60 - ELAPSED_TIME))
# 如果WAIT_TIME是正数,说明还没到一分钟,需要等待
if [ $WAIT_TIME -gt 0 ]; then
sleep $WAIT_TIME
fi
done

3..为图片添加时间水印 ( 修改时间 )

#!/bin/bash
# 创建processed目录,如果它还不存在的话
mkdir -p processed
# 设置计数器
counter=1
# 遍历目录下的所有.jpg等文件
for file in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG ; do
if [ -f "$file" ]; then
# 获取文件的原始扩展名
extension="${file##*.}"
# 获取文件的修改时间,并转换为易读的格式
# 注意这里的修改,使用-f选项
mod_time=$(stat -f %m "$file")
readable_time=$(date -r "$mod_time" "+%Y-%m-%d %H:%M:%S")
filename="image_$(printf "%04d" $counter).$extension"
# 增加计数器
((counter++))
# 使用ImageMagick的magick命令来添加时间水印
magick \
"$file" \
-font Arial \
-pointsize 120 \
-fill '#FFFFFF55' \
-gravity southeast \
-annotate +10+10 "$readable_time" \
"processed/$filename"
fi
done

4..将图片合成视频

Terminal window
ffmpeg -framerate 10 -i image_%04d.png -c:v libsvtav1 -crf 32 -pix_fmt yuv420p video1.mp4
#当排序不是从 0001 开始的时候
ffmpeg -framerate 10 -pattern_type glob -i 'image_*.png' -c:v libsvtav1 -crf 32 -pix_fmt yuv420p video1.mp4
ffmpeg -framerate 10 -i DSC_%04d.JPG -c:v libsvtav1 -crf 36 -pix_fmt yuv420p video2.mp4