最近要用到jdeli-imageio包里面一个功能,进行了去水印处理。
首先新建一个空白maven项目,并引入javassist依赖
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.28.0-GA</version>
</dependency>
编写一个Java类类处理
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
public class Cracker {
public static void main(String[] args) throws Exception {
cracker();
}
public static void cracker() throws Exception {
// 获取 Jar 包
ClassPool.getDefault().insertClassPath(
"D:/jdeli-imageio-cracker.jar");
CtClass c2 = ClassPool.getDefault().getCtClass("com.idrsolutions.image.JDeliImage");
CtMethod aMethod = c2.getDeclaredMethod("optimiseImage",new CtClass[]{ClassPool.getDefault().makeClass("java.awt.image.BufferedImage")});
// 重置方法体
aMethod.setBody("{ return $1;}");
c2.writeFile();
}
}
运行上面然后得到的class进行替换jar包里面的class文件即可。生成的class文件默认在当前项目的com.idrsolutions.image包下面。
提示:以上操作仅供学习研究参考,切勿用于商用。
http://blog.xqlee.com/article/1120.html