2年前,我提供了一个GIF4J的可用版,GIF4J是一套针对gif操作的Java类库。
周末无聊,最终破解了Gif4J的"Eval Gif4j"。
import
com.gif4j.
*
;
import
java.awt.
*
;
import
java.awt.image.BufferedImage;
import
java.io.File;
import
java.io.IOException;
public
class
GifImageWatermarkExample {
//
Usage: java GifImageWatermarkExample [PathToGifImageToWatermark] (please be sure that the gif4j jar is in your CLASSPATH)
//
By default the gif4j_logotype.gif as an example gif image is used
public
static
void
main(String[] args) {
File gifImageFileToWatermark
=
null
;
if
(args.length
==
0
) {
gifImageFileToWatermark
=
new
File(
"
test.gif
"
);
}
else
gifImageFileToWatermark
=
new
File(args[
0
]);
//
load and decode gif image
GifImage gifImage
=
null
;
try
{
gifImage
=
GifDecoder.decode(gifImageFileToWatermark);
}
catch
(IOException e) {
e.printStackTrace();
System.exit(
1
);
}
//
change out directory if it is necessary
File outputDir
=
new
File(
"
.
"
+
File.separator
+
"
result
"
);
if
(
!
outputDir.exists())
outputDir.mkdirs();
//
create watermark image using TextPainter
TextPainter painter
=
new
TextPainter(
new
Font(
"
Verdana
"
, Font.BOLD,
10
));
painter.setOutlinePaint(Color.WHITE);
BufferedImage watermarkImage
=
painter.renderString(
"
david.turing
"
,
true
);
//
create watermark
Watermark watermark
=
new
Watermark(watermarkImage, Watermark.LAYOUT_TOP_LEFT,
0.2f
);
//
apply watermark
GifImage topLeftWatermarked
=
watermark.apply(gifImage,
true
);
//
apply watermark smoothly
GifImage topLeftWatermarked_smoothly
=
watermark.apply(gifImage,
true
);
//
change the watermark alignment
watermark.setLayoutConstraint(Watermark.LAYOUT_MIDDLE_CENTER);
//
apply watermark
GifImage middleCenterWatermarked
=
watermark.apply(gifImage,
false
);
//
apply watermark smoothly
GifImage middleCenterWatermarked_smoothly
=
watermark.apply(gifImage,
true
);
//
change the watermark alignment
watermark.setLayoutConstraint(Watermark.LAYOUT_BOTTOM_RIGHT);
//
apply watermark
GifImage bottomRightWatermarked
=
watermark.apply(gifImage,
false
);
//
apply watermark smoothly
GifImage bottomRightWatermarked_smoothly
=
watermark.apply(gifImage,
true
);
//
change the watermark alignment
watermark.setLayoutConstraint(Watermark.LAYOUT_COVER_CONSECUTIVELY);
//
change the watermark transparency
watermark.setTransparency(
0.20f
);
//
apply watermark
GifImage coverConsWatermarked
=
watermark.apply(gifImage,
false
);
//
apply watermark smoothly
GifImage coverConsWatermarked_smoothly
=
watermark.apply(gifImage,
true
);
//
Save the results
try
{
GifEncoder.encode(topLeftWatermarked,
new
File(outputDir,
"
topLeftWatermarked.gif
"
));
GifEncoder.encode(topLeftWatermarked_smoothly,
new
File(outputDir,
"
topLeftWatermarked_smooth.gif
"
));
GifEncoder.encode(middleCenterWatermarked,
new
File(outputDir,
"
middleCenterWatermarked.gif
"
));
GifEncoder.encode(middleCenterWatermarked_smoothly,
new
File(outputDir,
"
middleCenterWatermarked_smooth.gif
"
));
GifEncoder.encode(bottomRightWatermarked,
new
File(outputDir,
"
bottomRightWatermarked.gif
"
));
GifEncoder.encode(bottomRightWatermarked_smoothly,
new
File(outputDir,
"
bottomRightWatermarked_smooth.gif
"
));
GifEncoder.encode(coverConsWatermarked,
new
File(outputDir,
"
coverConsWatermarked.gif
"
));
GifEncoder.encode(coverConsWatermarked_smoothly,
new
File(outputDir,
"
coverConsWatermarked_smooth.gif
"
));
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
下面是运行的结果:
破解的包放在我的UserGroup下载:
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=29304&threadID=36395&messageID=214504
分享到:
相关推荐
ScreenToGif是一款深受用户喜爱的免费屏幕录制与编辑软件,尤其在制作GIF动图方面表现出色。这款工具在Windows平台上运行,提供了一站式的解决方案,从捕捉屏幕画面到编辑和导出GIF格式的动态图像。版本2.17.1是其...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
HotNews(热点新闻)作为一款免费的Wordpress主题,集成了五、六十项功能,丰富的主题设置面板,功能模块化,虽是一款主题,却集成了CMS、BLOG、图片、视频等多个模版,统一的风格展示不同的内容。历经多次升级,...
简明批处理教程22009年10月20日 星期二 下午 05:35 最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕不容易看懂和理解这些批处理文件,也就更谈不上自己动手编写了,古...
� Android 的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金; Android 的 程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己...