md5图片
function fig() {
local id="$1"
local Fuzz1="${2:-2}"
local Fuzz2="${3:-2}"
local current_dir="$(pwd)"
local snip_dir="$HOME/snip"
# 获取最新文件(按修改时间倒序排序)
local latest_file="$(ls -t "$snip_dir" 2>/dev/null | head -n 1)"
if [[ -n "$latest_file" ]]; then
local latest_file_path="$snip_dir/$latest_file"
# 计算 MD5 值,并转换为小写
local md5_hash="$(md5 -q "$latest_file_path" | tr '[:upper:]' '[:lower:]')"
# 获取文件扩展名并转换为小写
local filename="$(basename "$latest_file_path")"
local extension="${filename##*.}"
extension="$(echo "$extension" | tr '[:upper:]' '[:lower:]')"
# 如果扩展名是 jpg, jpeg 或 png,则转换为 webp 格式
if [[ "$extension" == "jpg" || "$extension" == "jpeg" || "$extension" == "png" ]]; then
extension="webp"
local new_name="${md5_hash}.${extension}"
local new_path="$snip_dir/$new_name"
magick "$latest_file_path" -quality 100 -define webp:lossless=true -fuzz "${Fuzz1}%" -fill white -opaque white "$new_path"
else
# 如果文件名与扩展名不同,则添加扩展名,否则仅使用 MD5 作为新文件名
if [[ "$filename" != "$extension" ]]; then
local new_name="${md5_hash}.${extension}"
else
local new_name="${md5_hash}"
fi
local new_path="$snip_dir/$new_name"
mv "$latest_file_path" "$new_path"
fi
local original_url="https://img.ricolxwz.io/${new_name}"
local inverted_name="${md5_hash}_inverted.${extension}"
local inverted_url="https://img.ricolxwz.io/${inverted_name}"
local inverted_path="$snip_dir/$inverted_name"
# 创建反色图像
magick "$new_path" -negate \
-fuzz "${Fuzz2}%" -fill "rgb(18,19,23)" -opaque black \
-fuzz "${Fuzz2}%" -fill "rgb(226,228,233)" -opaque white \
-quality 100 \
"$inverted_path"
echo "Processed image: $new_name"
# 自动选择上传操作(可修改为通过 read 获取用户输入)
local upload_choice="y"
if [[ "$upload_choice" =~ ^[Yy]$ || -z "$upload_choice" ]]; then
echo "Starting upload operation..."
# 上传操作:调用 wrangler 工具上传到 R2 对象存储
wrangler r2 object put "ricolxwz-image/$new_name" --file "$new_path"
wrangler r2 object put "ricolxwz-image/$inverted_name" --file "$inverted_path"
echo "All upload operations completed."
local figid="fig${id}"
local capid="图${id}: "
local text="<figure markdown='1' id='${figid}'>
{ loading=lazy width='800' }
{ loading=lazy width='800' }
<figcaption>${capid}</figcaption>
</figure>"
# 复制格式化文本到剪贴板(macOS 使用 pbcopy)
echo "$text" | pbcopy
echo "The formatted text has been copied to the clipboard. Please paste to save."
# 回滚操作默认不执行,可修改为通过 read 获取用户输入
local rollback_choice="n"
if [[ "$rollback_choice" =~ ^[Yy]$ ]]; then
echo "Starting rollback operation..."
function Rollback() {
local file_name="$1"
wrangler r2 object delete "ricolxwz-image/${file_name}"
}
Rollback "$new_name"
Rollback "$inverted_name"
echo "Rollback operation completed."
else
echo "Rollback operation not performed."
fi
else
echo "Upload operation not performed."
fi
cd "$current_dir"
else
echo "No files found."
fi
}