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