Appearance
图像处理
Readori 图像链路
text
image URL + options
-> source headers / Referer / Cookie
-> raw bytes
-> coverDecodeJs or imageDecode(result, src)
-> validate UIImage
-> atomic source-scoped cache file
-> reader/search/detail/RSS漫画批次同时处理数量受限,避免 JavaScript bytes 数组和 UIKit 解码造成内存峰值。缓存 key 包含来源身份、URL 和脚本。
图像响应必须通过格式和尺寸校验后再写入缓存。请求取消、来源切换或解码失败时,不安装 过期结果,也不把本地缓存路径作为正文文字显示。
二次解密示例
站点把图片字节做了简单异或/位移混淆时,ruleContent.imageDecode(正文图片)或 coverDecodeJs(封面)会拿到原始字节 result 和图片地址 src,返回处理后的字节:
js
// 逐字节异或解混淆,key 从图片 URL 的查询参数里取
var key = /k=(\d+)/.exec(src)[1] | 0;
var bytes = result; // 原始字节(数组/可索引结构,具体桥接类型见 java.* 字节类方法)
for (var i = 0; i < bytes.length; i++) {
bytes[i] = bytes[i] ^ key;
}
bytes更常见的是站点直接用标准 AES/DES 加密图片字节,这种情况不需要手写异或循环,直接调用 java.aesBase64DecodeToString/对应的 ByteArray 变体即可,方法列表见 JS 执行上下文。imageStyle 字段(FULL 等取值) 控制的是阅读器里的排版方式,和这里的字节级解密是两回事,两个字段可以同时使用也可以只用 其中一个。
