發布GIF4J破解版
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();
????????}
????}
}
下面是運行的結果: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
posted on 2006-07-17 10:32 david.turing 閱讀(7058) 評論(6) 編輯 收藏 所屬分類: Java類庫收集 、數字水印