hunhun1981的专栏

移动开发,二维码,J2ME,Android,BlackBerry,iPhone,Symbian,Windows Mobile,Sun SPOT

用户操作
[即时聊天] [发私信] [加为好友]
张宇ID:hunhun1981
28532次访问,排名4158好友25人,关注者27
程序员
hunhun1981的文章
原创 53 篇
翻译 0 篇
转载 39 篇
评论 33 篇
张宇的公告
邮件订阅hunhun1981的专栏 加入我的维信
最近评论
zijingwuhaolou:很好很强大
zijingwuhaolou:很好很强大
Tirtle:確定大文件Jpeg file這個decoder能decode嗎?

我當初就是會解不了所以才頭痛
最後是靠著把org.eclipse.internal.image.JPEGDecoder這個decoder挖出來用才解決的
而且這個decoder也剛好是直接數據流解碼, 產生Image

最近遇到一個問題讓我煩
就是很多Wi……
hunhun1981:谢谢你的回复。
不过使用这个解码器,是为了能够对大文件(1280x1024以上)进行二维码的图形解码。这样的尺寸在多数手机没法构造。所以我们准备修改解码算法,直接在数据流中实现二维码的解码。
因此,才需要一个轻量级的图像解码器。

不过,到现在还没做完,呵呵!
Tirtle:其實很多手機上的Java platform都可以直接解JPEG了
只有某些較舊的機種或Java platform解不了
當使用內建的Decoder失敗時再改用軟體解即可

文章中提到的這個Decoder解大多數JPEG都沒問題
但是解某些Mega-Pixel JPEG時會出錯
會解出很奇怪的結果
文章分类
收藏
    相册
    朋友
    inc143的测试专栏
    mengya810104的测试专栏
    抛砖引砖--程老师
    暗夜公爵-游戏设计
    蓝天里的星星象钻石
    其它
    混混的淘宝店铺
    零余者环保资讯
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 JAR解压缩方法收藏

    新一篇: J2ME经验总结之Proguard混淆溢出 | 旧一篇: Why StAX?

    JAR解压缩方法 作者:hunhun1981 出自:http://blog.csdn.net/hunhun1981/

            下面这些代码,是用来解压jar文件的(我自己写了一个打包工具,专门用于修改配置文件并对原始JAR进行二次发布)。

    第一种是使用JarFile类来完成功能,大家可以稍加修改,集成ClassLoader既可以实现一个自解压的JAR包。

    package otheri;
    
    
    
    import java.io.BufferedOutputStream;
    
    import java.io.File;
    
    import java.io.FileOutputStream;
    
    import java.io.IOException;
    
    import java.io.InputStream;
    
    import java.io.OutputStream;
    
    import java.util.Enumeration;
    
    import java.util.jar.JarEntry;
    
    import java.util.jar.JarFile;
    
    
    
    /**
    
     *
    
     * @author hunhun1981 <hunhun1981@hotmail.com>
    
     */
    
    public class JARDecompressionTool {
    
    
    
        public static synchronized void decompress(String fileName, String outputPath) throws IOException {
    
            if (!outputPath.endsWith(File.separator)) {
    
                outputPath += File.separator;
    
            }
    
    
    
            File dir = new File(outputPath);
    
    
    
            if (!dir.exists()) {
    
                dir.mkdir();
    
            }
    
    
    
            JarFile jf = new JarFile(fileName);
    
            for (Enumeration e = jf.entries(); e.hasMoreElements();) {
    
                JarEntry je = (JarEntry) e.nextElement();
    
                String outFileName = outputPath + je.getName();
    
                File f = new File(outFileName);
    
    
    
                if (outFileName.endsWith("/") || outFileName.endsWith("\\") || outFileName.endsWith(File.separator)) {
    
                    f.mkdir();
    
                } else {
    
                    InputStream in = jf.getInputStream(je);
    
                    OutputStream out = new BufferedOutputStream(new FileOutputStream(f));
    
                    byte[] buffer = new byte[2048];
    
                    int nBytes = 0;
    
    
    
                    while ((nBytes = in.read(buffer)) > 0) {
    
                        out.write(buffer, 0, nBytes);
    
                    }
    
                    out.flush();
    
                    out.close();
    
                    in.close();
    
                }
    
            }
    
        }
    
    }

     

    第二种是使用ant,代码中还附带了jar的打包和wtk签名的方法。使用前请先集成ant和antenna。

    package otheri.j2mePackageTools;
    
    
    
    import de.pleumann.antenna.WtkSign;
    
    import java.io.File;
    
    import org.apache.tools.ant.Project;
    
    import org.apache.tools.ant.taskdefs.Expand;
    
    import org.apache.tools.ant.taskdefs.Jar;
    
    import org.apache.tools.ant.types.FileSet;
    
    
    
    /**
    
     *
    
     * @author hunhun1981 <hunhun1981@hotmail.com>
    
     */
    
    public class JARUtils {
    
    
    
        public static void jarPackage(File srcPath, File manifest, String manifestEncoding, File output) {
    
            Project prj = new Project();
    
            Jar jar = new Jar();
    
            jar.setProject(prj);
    
            jar.setDestFile(output);
    
    
    
            FileSet fileSet = new FileSet();
    
            fileSet.setProject(prj);
    
            fileSet.setDir(srcPath);
    
            fileSet.setIncludes("**/*.*");
    
            jar.addFileset(fileSet);
    
    
    
            jar.setManifest(manifest);
    
            jar.setManifestEncoding(manifestEncoding);
    
    
    
            jar.execute();
    
        }
    
    
    
        public static void jarExpand(File jarFile, File outputPath) {
    
            Project prj = new Project();
    
            Expand expand = new Expand();
    
            expand.setProject(prj);
    
            expand.setSrc(jarFile);
    
            expand.setOverwrite(true);
    
            expand.setDest(outputPath);
    
            expand.execute();
    
        }
    
    
    
        public static void wtkSign(File jadFile, File jarFile, File keyStoreFile, String storePass, String cerAlias, String cerPass) {
    
            Project prj = new Project();
    
            WtkSign wtk = new WtkSign();
    
            wtk.setProject(prj);
    
    
    
            wtk.setJadFile(jadFile);
    
            wtk.setJarFile(jarFile);
    
    
    
            wtk.setKeyStore(keyStoreFile);
    
            wtk.setStorePass(storePass);
    
    
    
            wtk.setCertAlias(cerAlias);
    
            wtk.setCertPass(cerPass);
    
    
    
            wtk.execute();
    
        }
    
    }

     

    更多信息,请关注hunhun1981的专栏

    发表于 @ 2008年06月12日 09:48:38|评论(loading...)|编辑|收藏

    新一篇: J2ME经验总结之Proguard混淆溢出 | 旧一篇: Why StAX?

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 张宇