Skip to content

图像处理

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 等取值) 控制的是阅读器里的排版方式,和这里的字节级解密是两回事,两个字段可以同时使用也可以只用 其中一个。

Readori 使用与开发文档