java如何通过图片链接获取图片的格式 5C

要将图片通过链接下载到本地然后在上传到自己的服务器上 但是图片的格式是无法获取到
存入到本地的都是判断出来的格式 有一些是不正确的

  URL url = new URL(matcher2.group().substring(5, matcher2.group().length() - 1));
                        String last = getUrl(String.valueOf(url));
                        URLConnection con = url.openConnection();
                        con.setConnectTimeout(120 * 1000);
                        InputStream is = con.getInputStream();
                        byte[] bs = new byte[1024];
                        int len;
                        String xxUrl = "temp";
                        File sf = new File(xxUrl);
                        if (!sf.exists()) {
                            sf.mkdirs();
                        }
                        String uuid32 = getUUID32();
                        OutputStream os = new FileOutputStream(sf.getPath() + "/" + uuid32 + last);

在outPut的时候last就是图片的格式 但是不知道怎么通过链接获取图片格式 请教一下大佬帮忙看一下有什么事可以解决的
图片链接
https://mmbiz.qpic.cn/mmbiz_jpg/FJYxahcppx2C9jyw4hJQKH9R9Ws8LdPicmrAvfw7kS1Tau6PuLP7eOBjqybtiaT9icJo9OupL9ibMdAIFBnR2wtvSQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

0

2个回答

使用后缀获取图片格式是不可取的,每一个图片文件都是可以解析的,在他们的元数据区都存在魔数,我们可以通过魔数进行判断该图片类型。

 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ImageTest {

    /**
     * 读取文件的前10个字节
     *
     * @return  前10个字节
     */
    private static byte[] readFileTenBytes(File file) {
        byte[] buffer = new byte[10];
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            //noinspection ResultOfMethodCallIgnored
            fileInputStream.read(buffer);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return buffer;
    }

    /**
     * 字节数组转成16进制表示格式的字符串
     *
     * @param byteArray
     *            需要转换的字节数组
     * @return 16进制表示格式的字符串
     **/
    private static String toHexString(byte[] byteArray) {
        StringBuilder hexString = new StringBuilder();
        for (byte aByteArray : byteArray) {
            if ((aByteArray & 0xff) < 0x10) {
                hexString.append("0");
            }
            hexString.append(Integer.toHexString(0xFF & aByteArray));
        }
        return hexString.toString().toLowerCase();
    }

    public static void main(String[] args) {
        File jpgImageFile = new File("/Users/xuanchi.lyf/Desktop/test.png");
        byte[] bytes = readFileTenBytes(jpgImageFile);
        if (bytes == null) {
            return;
        }
        System.out.println(toHexString(bytes));
    }

}

常用的图片魔数有下面这些:
图片说明

2
zhangpan_soft
zhangpan_soft 正解
11 个月之前 回复

把问号后面的字符串截取掉就是正常连接

0
zhangpan_soft
zhangpan_soft 回复qq_40838030: 1楼回答就是正解,流本身就可以判定格式,通过url判定是不可取的,就给你打个比方,我一个jpg文件,我去后缀保存,你敢说我这不是个图片么?我用流格式访问之后,一样完全可以正常显示为图片,因为在二进制流里面就包含这个文件的所有信息,所以其就是一张图片,1楼用流判定是 完全正确的,你不论理解与不理解拿上去用就ok了
11 个月之前 回复
qq_35235940
听楼一夜雨 也可以通过图片Data数据第一个字节 来获取图片扩展名
12 个月之前 回复
qq_35235940
听楼一夜雨 mmbiz_jpg
12 个月之前 回复
qq_40838030
从小我就黑 我要的是图片的格式 因为要保存到本地 图片链接我都可以处理的 就是获取不到图片的格式
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java如何通过连接获取图片
Jsp页面 Servlet public void addBooks(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ response.setCharacterEncoding("utf-8"); User user = new User();...
通过Uri获取图片的绝对路径
public static String getRealPathFromUri(Context context, Uri uri) { if (context == null || uri == null) { return null; } if (&quot;file&quot;.equalsIgnoreCase(uri.getSche...
通过流获取图片
src=&quot;GetJpgServlet?jpgName=&quot;+jpgName+&quot;/&gt;&quot; 详细实现代码见附件
ios通过URL地址,从网络上获取图片
-(UIImage *) getImageFromURL:(NSString *)fileURL  { NSLog(@"执行图片下载函数"); UIImage * result; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; result = [UIImage
通过URL获取图片
第一种方式:官方提供的方法 异步获取图片,通过队列实现,而且图片会有缓存,在下次请求相同的连接的时候 系统会自动调用缓存 而不从网上请求数据UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 100.0f, 100.0f, 100.0f)]; [imageView setImageWith
通过MultipartFile获取图片宽高
MultipartFile转File再获取 MultipartFile multipartFile = uploadReq.getFile(); // 获取请求传过来的MultipartFile String fileName = multipartFile.getOriginalFilename(); String prefix=fileNam...
通过java获取图片的宽和高 工具类
通过java获取图片的宽和高 工具类, 可分别获取宽和高度,工具类可以直接调用
java获取图片
Image img = Toolkit.getDefaultToolkit ().getImage ("F:\\Photo\\2014-02-08_141034.png");setIconImage (img);
android java反射,通过图片名获取图片
android java反射,通过图片名获取图片
图片链接
将图片和链接结合
java下载url图片链接
1.从之前写的一篇中改写了代码,从远程的url链接中下载图片,并对各种浏览器的中文文件名进行展示 /** * 根据url路径下载图片 * @param filename 处理下载时显示设置好的中文名 eg:张三的照片.jpg * @param path 要保存在本地的临时路径(下载之后会将保存在此处的图片删除)eg: d:/image * @param url 图片链接 eg: http
Java导出图片链接
cell.setCellFormula(&quot;HYPERLINK(\&quot;&quot; +链接地址 + &quot;\&quot;,&quot; + &quot;\&quot;+页面显示名称 +&quot;\&quot;)&quot;);
jsp 如何通过servlet获取图片的路径?
哪位大神帮我看看啊 这个怎么获取啊
图片链接?
开发一个汽车零部件查询系统(或者说汽车结构查询系统),要求点击图片上的某一部位,图片能链接到对应的局部总成(或零件)图;怎么做啊?客户给的是一张张的JPG图片;有人说得建立一个每张图片上各部分的坐标系,保存到数据库里,然后根据鼠标所在位置查找数据库,得到对应部件,可是这样做工作量巨大啊!!rn各位有什么好主意没有啊???
从图库获取图片的真实格式
从图库获取图片时,服务器提示图片格式不能解析,测试发现是格式的问题,统一写成了xxx.jpg格式,造成部分gif或者png图片无法解析,通过uri可获取图片的真实mime类型public static String getExtensionName(Context context,Uri uri) { Cursor cur = context.getContentResolver()
获取图片和文件的大小和格式
heml代码           图片格式为:   图片大小为: js代码 $(function(){        var p_1 = $('#p_1'),          p_2 = $('#p_2');        $('body').on('change','#file',function(){        var path = $(this).va
URL获取图片存储字节格式
要存储图片字节格式。使用如下代码:rnrn URL url = newrn URL("http://images.11bestbuy.com/images/small_17385013870957.jpg");rn InputStream anyfile = url.openStream();rnrn但是报错rn
通过网络获取图片并缓存
public class ImageLoaderLoadingListener extends  SimpleImageLoadingListener{ ImageView iv=null; public ImageLoaderLoadingListener(ImageView image) { this.iv=image; } public void onLoadingCompl
springboot通过URL直接获取图片
第一步: 配置配置文件填加 classpath:/image/  第二步: 映射请求到图片路径下 registry.addResourceHandler(&quot;/image/**&quot;).addResourceLocations(&quot;file:&quot; + SystemAPI.filePath); 注意:SystemAPI.filePath为要访问的文件夹路径 整体代码如图 实现以上两步便...
通过ICAMERA怎样获取图片的RGB?
请问怎样经过ICAMERA接口就能获取图片的RGB呢?
怎么通过JS 获取图片信息
http://guanxi.koubei.com/apps/gift/giftdiy.phprn例如 以上网址中 点击自制礼物图片 选定图片并加边框 对号 获取图片的值rnrn最好是有实例的 谢谢了rn
通过图片url获取图片数据
//此方法的作用是使下面的方法可以获取https的图片数据private static void trustAllHosts() { try { SSLContext sc = SSLContext.getInstance(&quot;TLS&quot;); sc.init(null, xtmArray, new java.security.SecureRandom()); ...
通过图片地址获取图片,优化
// Get the source image's dimensions BitmapFactory.Options options = new BitmapFactory.Options(); // This does not download the actual image, just downloads headers. options.inJustDecodeB...
怎么通过ASP获取图片的绝对地址
我要从网页源代码中获取标签里的图片地址,如果图片地址是以http://开头的就好办,问题是图片地址有时候是相对地址,比如:img/upload/1.jpg,这个时候要怎么样获取图片的绝对地址?rn还有可能是../img/upload.1.jpg。
js 将图片链接转换成base64格式的简单实例
简单案例&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;HTML&amp;gt; &amp;lt;HEAD&amp;gt; &amp;lt;meta name =“viewport”content =“width = device-width”/&amp;gt; &amp;lt;title&amp;gt; jquery图片base64 &amp;lt;/ title&amp;gt; &amp;lt;/ HEAD&amp;gt; &amp;lt;BODY&amp;g
java 获取图片高和宽
public static Map getImageWH(byte[] bytes ){ Map map = new HashMap(); if(bytes==null){ map.put(&quot;w&quot;, 0); map.put(&quot;h&quot;, 0); return map; } try{ ByteArrayInputStream stre...
java获取图片的小程序
获取图片的小程序.可以循环看图片。像播放幻灯片那样。
JAVA获取图片宽高
package test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iter...
java获取图片类型
/*  File file = new File("C:/Users/zhangzhengyi/Desktop/tt1.png"); byte[] buf = new byte[10240];   FileInputStream fi = new FileInputStream(file); System.out.println(fi.read(buf)); System.out.pr
java获取图片的信息
1:获取本地图片大小File picture=new File(strSrc);BufferedImage sourceImg=ImageIO.read(new FileInputStream(picture));2:获取网络图片大小BufferedImage sourceImg=ImageIO.read(new URL(strSrc).openStream());sourceImg.getWid...
java获取图片的宽度高度
[code=&quot;java&quot;] import javax.swing.ImageIcon; String path = getImagePath(request); ImageIcon icon=new ImageIcon( request.getRealPath(&quot;/images/&quot;+path)); int iWidth=icon.getIconWidth(); ...
(JAVA)获取图片轮廓
原始图片类型为 jpg(type:TYPE_3BYTE_BGR)1.读取图片File filepath = new File("e://shang.jpg"); //image file path BufferedImage image = ImageIO.read(filepath); //image's read_buffer int type= image.getType();
Java 获取图片的绝对路径方法
ImageIcon imglogo = new ImageIcon(ClassLoader.getSystemResource(&quot;com/code/test/image/loading.gif&quot;));
java获取图片的宽度和高度
package com.suobei.test; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; /** * 获取图片的宽度和高
java 获取图片信息
获取图片信息: [code=&quot;java&quot;] File _file = new File(&quot;example.jpg&quot;); //读入文件 BufferedImage src = javax.imageio.ImageIO.read(_file); //构造Image对象 int width = src.getWidth(null); //得到源图宽 int height = src.g...
java获取图片的EXIF信息
java获取图片的EXIF信息,其中包括 反射机制
java获取图片详情信息
1、所需jar包 metadata-extractor-2.9.1 2、编写测试类 import java.io.File; import java.io.IOException; import java.util.Iterator; import com.drew.imaging.jpeg.JpegMetadataReader; import com.drew.im...
java获取图片属性
package readPhoto;import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException;
java 获取图片的exif信息
网上很多这类方法都没法用,自己探索了一下。 maven工程导入jar包 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.drewnoakes&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;metadata-extractor&amp;lt;/artifactId&amp;gt; ...
Java获取图片的原始宽高
package com.example.demo; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageUtil {     public static v
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合