=== WP 图片无损压缩器 ===
Contributors: 龙宫宝库
Author: 龙宫宝库
Author URI: https://www.loongpalace.com.cn
Tags: image, optimize, compress, webp, lossless
Requires at least: 5.6
Tested up to: 6.6
Requires PHP: 7.2
Stable tag: 1.0.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

上传即压缩图片：支持无损/平衡两种模式、最大宽高等比缩放、统一转换 WebP/JPEG/PNG，并可批量优化媒体库历史图片。内置系统探针与使用说明。

== Description ==

WP 图片无损压缩器在图片进入媒体库的那一刻就把它压到最合理的体积，服务器磁盘、带宽和备份体积同时下降。

核心特性：

* **真正的无损模式**：不重新绘制像素，直接按 JPEG/PNG/WebP 的容器结构剥离 EXIF、XMP、IPTC 等元数据，像素压缩数据一个字节都不动。
* **尺寸缩放**：按最大宽高等比缩小，绝不放大小图，摄影师站常见的 6000px 原图可一键压到 1920px。
* **格式转换**：统一输出 WebP / JPEG / PNG，附件类型、文件名、GUID 与元数据自动同步。
* **批量优化**：扫描媒体库历史图片，逐张处理并实时显示进度与节省量，可随时停止。
* **安全兜底**：压缩前后体积对比，变大就保留原图；可选备份原图并支持一键还原；动态 GIF 自动跳过。
* **减少无用尺寸**：可禁用主题/插件注册的任意缩略图尺寸，从源头减少文件数量。
* **系统工具加速**：检测到 jpegtran / jpegoptim / optipng / pngquant / cwebp 时自动调用，压缩率更高。
* **系统探针**：一键在你的服务器上实时生成测试图，实测无损剥离 / 平衡压缩 / WebP 转换的压缩率与兼容性矩阵，并给出诊断建议。
* **使用说明**：内置图文使用指南，含场景化推荐配置与常见问题。

== Installation ==

1. 后台进入「插件 → 安装插件 → 上传插件」，选择本插件的 zip 包；或把 `wp-image-optimizer` 目录上传到 `/wp-content/plugins/`。
2. 启用插件。
3. 进入「图片压缩 → 系统探针」检测环境。
4. 进入「图片压缩 → 压缩设置」，配置压缩模式、尺寸与输出格式。
5. 进入「图片压缩 → 批量优化」，扫描并处理历史图片（建议先开启「备份原图」）。

== Frequently Asked Questions ==

= 无损模式真的完全无损吗？ =
是的。无损模式不会重采样或重新编码像素，只做两件事：删除元数据段（JPEG 的 APP1/APP2/COM、PNG 的 tEXt/zTXt/iTXt/eXIf、WebP 的 EXIF/XMP 块），以及在服务器装有 jpegtran/optipng/cwebp 时调用它们做无损重排编码。只有在你设置了「尺寸限制」或「格式转换」时才会动到像素。

= 平衡模式会损失多少画质？ =
质量默认 82，肉眼几乎无法分辨，通常可再省 30%~70% 体积。要求严格的站点可以调到 90 以上。

= 转换成 WebP 后旧文章里的图片地址会失效吗？ =
不会。转换时文件的扩展名、附件的 post_mime_type、guid 和 `_wp_attachment_metadata` 会同步更新，前台调用 `wp_get_attachment_image()` 等函数仍会拿到正确地址。

= 压缩出问题能退回吗？ =
开启「备份原图」后，原图会被复制到 `wp-content/uploads/wpio-backup/`，媒体库列表中每一行都有「还原原图」入口。

= 会处理动态 GIF 吗？ =
不会，动态 GIF 会被自动跳过，避免破坏动画帧。

== Changelog ==

= 1.0.1 =
* 修复：调用 jpegoptim 时直接改写原文件、结果被丢弃甚至校验缺失的问题，改为在临时副本上优化并做「可解析 + 尺寸一致 + 体积更小」三重校验后才替换。
* 修复：格式转换后目标文件名与他人附件重名时被静默覆盖，现自动改用 `-1`/`-2` 等可用名。
* 修复：无损模式下误调用有损的 pngquant，导致「无损模式」实际产生画质损失。
* 修复：优化过程中抛出异常时内部忙标志未复位，导致同一次请求后续图片全部不再优化。
* 修复：批量优化的 AJAX 接口 capability 与菜单不一致（`upload_files` vs `manage_options`）。
* 修复：批量扫描硬编码上限 5000 张且无分页，超出部分被静默忽略。
* 修复：系统探针在不同工具间复用同一张样例图、并按错误路径读取文件大小，导致探测结果失真。
* 修复：PNG 块长度在 32 位 PHP 下的整数溢出校验。
* 修复：`registered_sizes()` 伪造 `full` 尺寸、缩略图尺寸读取来源不正确。
* 修复：环境缓存 transient 中塞入 `wp_upload_dir()` 大数组（含服务器绝对路径）。
* 修复：还原原图与 GD 重编码路径缺少有效性校验，可能写入损坏文件。
* 修复：还原原图后统计计数未回退。
* 优化：清理 readme 中重复的安装章节。

= 1.0.0 =
* 首个版本：上传自动压缩、无损/平衡双模式、尺寸缩放、格式转换、批量优化、缩略图尺寸管理、原图备份与还原、统计面板。
