recherche

Maison  >  Questions et réponses  >  le corps du texte

android - 安卓怎么判断通过图库选择的图片类型?

在调用图库选图片后图库给的图片路径的content://的没有后缀名如何判断图片是png还是gif?如果有通过bitmap判断的方法也行!

PHP中文网PHP中文网2826 Il y a quelques jours529

répondre à tous(4)je répondrai

  • 天蓬老师

    天蓬老师2017-04-17 17:36:23

    Vous pouvez obtenir le nom en fonction du chemin de l'image, puis utiliser "." pour segmenter les mots

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:36:23

    Déterminez le type d'image par l'identifiant d'en-tête du fichier, référence : http://zjf30366.blog.163.com/...

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:36:23

    通过文件头信息获取

    /**
     * 获取文件类型
     * @param filePath
     * @return
     */
    public static String getImageType(String filePath) {
        FileInputStream is = null;
        String value = null;
        try {
            is = new FileInputStream(filePath);
            byte[] b = new byte[3];
            is.read(b, 0, b.length);
            value = bytesToHexString(b);
        } catch (Exception e) {
        } finally {
            if(null != is) {
                try {
                    is.close();
                } catch (IOException e) {}
            }
        }
        if("FFD8FF".equals(value)){
            return "jpg";
        } else if("FFD8FF".equals(value)){
            return "jpg";
        } else if("47494638".equals(value)){
            return "gif";
        } else if("424D".equals(value)){
            return "bmp";
        }
        return value;
    }
    private static String bytesToHexString(byte[] src){
        StringBuilder builder = new StringBuilder();
        if (src == null || src.length <= 0) {
            return null;
        }
        String hv;
        for (int i = 0; i < src.length; i++) {
            hv = Integer.toHexString(src[i] & 0xFF).toUpperCase();
            if (hv.length() < 2) {
                builder.append(0);
            }
            builder.append(hv);
        }
        return builder.toString();
    }

    // mFileTypes.put("FFD8FF", "jpg");
    // mFileTypes.put("89504E47", "png");
    // mFileTypes.put("47494638", " gif");
    // mFileTypes.put("49492A00", "tif");
    // mFileTypes.put("424D", "bmp");
    // //
    // mFileTypes.put("41433130", "dwg"); //CAO
    // mFileTypes.put("38425053", "psd");
    // mFileTypes.put("7B5C727466", "rtf"); //日记本
    // mFileTypes.put("3C3F786D6C", "xml");
    // mFileTypes.put("68746D6C3E", "html");
    // mFileTypes.put("44656C69766572792D646174653A", "eml"); //邮件
    // mFileTypes.put("D0CF11E0", "doc");
    // mFileTypes.put("5374616E64617264204A", "mdb");
    // mFileTypes.put("252150532D41646F6265", "ps");
    // mFileTypes.put("255044462D312E", "pdf");
    // mFileTypes.put("504B0304", "zip");
    // mFileTypes.put("52617221", "rar");
    // mFileTypes.put("57415645", "wav");
    // mFileTypes.put("41564920", "avi");
    // mFileTypes.put("2E524D46", "rm");
    // mFileTypes.put("000001BA", "mpg");
    // mFileTypes.put("000001B3", "mpg");
    // mFileTypes.put( "6D6F6F76", "mov");
    // mFileTypes.put("3026B2758E66CF11", "asf");
    // mFileTypes.put("4D546864", "mid");
    // mFileTypes.put("1F8B08", "gz");
    // mFileTypes.put("", "");
    // mFileTypes.put("", "");

    répondre
    0
  • 高洛峰

    高洛峰2017-04-17 17:36:23

    L'obtenir via l'en-tête du fichier est un peu gênant. Le meilleur moyen est d'obtenir le nom du fichier et d'intercepter son suffixe pour déterminer le type. C'est ainsi que le système Windows détermine le type de fichier, il n'y aura donc aucun problème à le faire.

    répondre
    0
  • Annulerrépondre