如何利用java读取网络照片

合集下载

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法
1. 使用Java IO流读取服务器端文件:
使用Java IO流可以读取服务器端文件,具体步骤如下:
(1)使用URL类的openStream()方法获取URL对象的输入流;
(2)使用BufferedReader类的readLine()方法读取文件内容;
(3)使用String类的split()方法将读取的内容按照指定的分隔符分割为字符串数组;
(4)使用Arrays类的toString()方法将字符串数组转换为字符串;
(5)使用String类的replace()方法替换掉特殊字符;
(6)使用String类的split()方法将字符串按照指定的分隔符分割为字符串数组;
(7)使用for循环遍历字符串数组,将每个字符串元素添加到ArrayList中;
(8)将ArrayList转换为字符串数组,并返回。

2. 使用Java NIO读取服务器端文件:
使用Java NIO可以读取服务器端文件,具体步骤如下:
(1)使用Paths类的get()方法获取服务器端文件的路径;
(2)使用Files类的readAllBytes()方法读取文件的所有字节;
(3)使用String类的split()方法将读取的内容按照指定的分隔符分割为字符串数组;
(4)使用for循环遍历字符串数组,将每个字符串元素添加到ArrayList中;
(5)将ArrayList转换为字符串数组,并返回。

java根据图片路径下载图片并保存到本地目录

java根据图片路径下载图片并保存到本地目录

java根据图⽚路径下载图⽚并保存到本地⽬录内容import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import .URL;import .URLConnection;public class DownloadImage {/*** @param args* @throws Exception*/public static void main(String[] args) throws Exception {// TODO Auto-generated method stubdownload("/1/3/B/1_li1325169021.jpg", "1_li1325169021.jpg","d:\\image\\");}public static void download(String urlString, String filename,String savePath) throws Exception {// 构造URLURL url = new URL(urlString);// 打开连接URLConnection con = url.openConnection();//设置请求超时为5scon.setConnectTimeout(5*1000);// 输⼊流InputStream is = con.getInputStream();// 1K的数据缓冲byte[] bs = new byte[1024];// 读取到的数据长度int len;// 输出的⽂件流File sf=new File(savePath);if(!sf.exists()){sf.mkdirs();} // 获取图⽚的扩展名String extensionName = filename.substring(stIndexOf(".") + 1);// 新的图⽚⽂件名 = 编号 +"."图⽚扩展名String newFileName = goods.getProductId()+ "." + extensionName;OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename);// 开始读取while ((len = is.read(bs)) != -1) {os.write(bs, 0, len);}// 完毕,关闭所有链接os.close();is.close();}}。

Java获取图片的大小、宽、高

Java获取图片的大小、宽、高

Java获取图⽚的⼤⼩、宽、⾼ 1import java.awt.image.BufferedImage;2import java.io.File;3import java.io.FileInputStream;4import java.io.FileNotFoundException;5import java.io.IOException;67import javax.imageio.ImageIO;89public class Picture {10public static void main(String[] args) throws FileNotFoundException, IOException {11 File picture = new File("E:/PrintScreen/StarSky.jpg");12 BufferedImage sourceImg = ImageIO.read(new FileInputStream(picture));1314 System.out.println(String.format("Size: %.1f KB", picture.length()/1024.0));15 System.out.println("Width: " + sourceImg.getWidth());16 System.out.println("Height: " + sourceImg.getHeight());17 }18 }这个没看懂!1import java.io.File;2import java.io.IOException;3import java.util.Iterator;45import javax.imageio.ImageIO;6import javax.imageio.ImageReader;7import javax.imageio.stream.ImageInputStream;89public class Picture {10public static void main(String[] args) {11 String srcPath = "E:/PrintScreen/1.jpg";1213 File file = new File(srcPath);14try {15 Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("jpg");16 ImageReader reader = (ImageReader) readers.next();17 ImageInputStream iis = ImageIO.createImageInputStream(file);18 reader.setInput(iis, true);19 System.out.println("width: " + reader.getWidth(0));20 System.out.println("height: " + reader.getHeight(0));21 } catch (IOException e) {22 e.printStackTrace();23 }24 }25 }##########################################################################注意:图⽚是预先存放在Java Project下的Package中1import java.awt.Image;2import java.awt.image.BufferedImage;3import java.io.IOException;4import .URL;56import javax.imageio.ImageIO;78public class GetImageSize {9public static void main(String[] args) throws IOException {10 BufferedImage bi = null;1112try {13 URL u = GetImageSize.class.getClassLoader().getResource("images/background.png");14 bi = ImageIO.read(u);15 } catch (IOException e) {16 e.printStackTrace();17 }18 Image img = bi;1920 System.out.println(img.getWidth(null));21 System.out.println(img.getHeight(null));22 }23 }。

java中bufferedimage的用法

java中bufferedimage的用法

文章标题:深度解析Java中BufferedImage的用法与应用一、介绍在Java编程中,BufferedImage是一个常用的类,用于处理图像的像素数据。

它提供了丰富的方法和功能,可以用于图像的读取、处理和保存,同时也支持图像的格式转换和像素操作。

在本文中,我们将深度探讨BufferedImage的用法与应用,并介绍其在Java图像处理中的重要性。

二、BufferedImage的基本用法1. BufferedImage的创建在Java中,我们可以通过ImageIO类的read()方法来创建一个BufferedImage对象,例如:```BufferedImage image = ImageIO.read(new File("image.jpg")); ```2. BufferedImage的基本操作BufferedImage类提供了getRGB()和setRGB()方法来读取和修改像素值,同时也支持获取宽度、高度和颜色模型等属性。

三、BufferedImage的高级功能1. 图像格式转换BufferedImage可以方便地进行图像格式的转换,例如将JPEG格式的图像转换为PNG格式:```BufferedImage originalImage = ImageIO.read(newFile("image.jpg"));ImageIO.write(originalImage, "png", new File("image.png"));```2. 像素级操作BufferedImage支持对图像进行像素级操作,例如修改像素颜色、绘制图形和文字等。

四、BufferedImage的应用场景1. 图像处理在图像处理应用中,BufferedImage可以用于图像的读取、编辑和保存,同时也支持图像的缩放、裁剪和旋转等操作。

2. 视频处理在实时视频处理中,BufferedImage可以用于处理视频帧的像素数据,例如视频流的转换、滤镜效果的应用和视频数据的提取等。

Java图像处理:使用Java 2D API实现图片处理

Java图像处理:使用Java 2D API实现图片处理

Java图像处理:使用Java 2D API实现图片处理引言:随着数字摄影技术的发展,我们每天都会拍摄大量的照片。

然而,有时候我们可能需要对这些照片进行一些处理,以使它们更加美观或符合特定的需求。

在本文中,我们将介绍如何使用Java 2D API来实现图片处理,帮助您更好地处理和优化您的图片。

第一部分:Java 2D API简介Java 2D API是Java平台中用于处理图形和图像的强大工具。

它提供了一组丰富的类和方法,使我们能够创建和操作各种图形对象,如线条、矩形、多边形和图像。

Java 2D API还支持图形渲染、颜色管理和图像转换等高级功能。

第二部分:加载和显示图片在开始处理图片之前,我们首先需要加载和显示图片。

Java 2D API提供了Image类来处理图像。

我们可以使用ImageIO类的静态方法read()来从文件中读取图像,并将其保存在一个Image对象中。

然后,我们可以使用Graphics类的drawImage()方法将图像绘制到指定的位置上。

第三部分:图片缩放有时候,我们可能需要调整图片的大小,使其适应特定的显示区域或满足特定的要求。

Java 2D API提供了AffineTransform类来处理图像的变换操作。

我们可以使用AffineTransform类的scale()方法来缩放图像。

通过指定缩放因子,我们可以按比例增加或减小图像的大小。

第四部分:图片旋转除了缩放,有时候我们还需要将图片旋转一定角度。

Java 2D API同样提供了AffineTransform类来实现图像的旋转操作。

我们可以使用AffineTransform类的rotate()方法来指定旋转的角度,并将其应用于图像。

第五部分:图片滤镜效果为了给图片增加一些特殊的效果,Java 2D API提供了一些内置的滤镜类。

我们可以使用这些滤镜类来对图像进行模糊、锐化、亮度调整等操作。

通过创建一个Filter对象,并将其应用于图像,我们可以很容易地实现这些效果。

Java实现海康摄像头抓拍图像Windows、Linux

Java实现海康摄像头抓拍图像Windows、Linux

Java实现海康摄像头抓拍图像Windows、Linux先抱怨⼀下,打死都想不到,海康的摄像头SDK居然是⼀个Java类,还有必须的两个jar包(jna.jar,examples.jar)。

⿁能想得到会这么命名。

下⾯开始吧。

Windows1. 把从官⽹下载的SDK(和当前系统对应)解压,把库⽂件整个拷贝到某个⽬录(我是D:\hik\libs),然后把D:\hik\libs和D:\hik\libs\HCNetSDKCom加⼊到系统环境变量path中。

可以尝试从代码中把这两个⽂件夹加⼊path,我没有试成功。

2. 项⽬引⼊jna.jar和examples.jar这两个jar包。

注意:⼀定要⽤官⽹SDK⾥⾯的,千万不要⽤其他版本的jna。

3. 从ClientDemo中把HCNetSDK.java拷贝到⾃⼰的项⽬中(这就是神奇的SDK)。

4. 开始主体,Java代码:public class CameraManager {private static Logger logger = LoggerFactory.getLogger(CameraManager.class);private static HCNetSDK sdk = HCNetSDK.INSTANCE;private static NativeLong userId = new NativeLong(-1);//⽤户登录ID,值为0,1,2...private static NativeLong startChan = new NativeLong(-1); // start channel numberprivate void login(String ip, short port, String username, String pwd){//sdk初始化if (!_DVR_Init()){logger.error("海康SDK初始化失败!" + _DVR_GetLastError());}//注册设备NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30();//登录userId = _DVR_Login_V30(ip, port, username, pwd, deviceInfo);if (userId.intValue() < 0){logger.error("摄像头⽤户登录失败!Err:" + _DVR_GetLastError());}startChan.setValue(deviceInfo.byStartChan);}public boolean takePic(String ip, short port, String username, String pwd) {if (userId.intValue() < 0 || startChan.intValue() < 0) {("执⾏海康摄像机登录,ip[{}],port[{}],username[{}].",ip,port,username);login(ip,port,username,pwd);}("准备拍照,userId:[{}],startChan:[{}]",userId.intValue(),startChan.intValue());//拍照NET_DVR_JPEGPARA strJpeg = new NET_DVR_JPEGPARA();strJpeg.wPicQuality = 1; //图像参数strJpeg.wPicSize = 2;String filePath = "E:\\123q.jpg";boolean b = _DVR_CaptureJPEGPicture(userId, startChan, strJpeg, filePath);//尝试⽤NET_DVR_CaptureJPEGPicture_NEW⽅法,但不是报43就是JDK崩溃.... if(!b){//单帧数据捕获图⽚System.out.println("抓拍失败!" + " err: " + _DVR_GetLastError());}else{System.out.println("抓拍成功");}return b;}public void logout(){_DVR_Logout(userId);_DVR_Cleanup();}}5. 完成。

使用JAVA进行图像识别与处理的工具及技术

使用JAVA进行图像识别与处理的工具及技术

使用JAVA进行图像识别与处理的工具及技术引言:随着科技的不断发展,图像识别与处理已经成为了计算机科学领域的热门研究方向。

而JAVA作为一种广泛应用于软件开发的编程语言,也提供了丰富的工具和技术来支持图像识别与处理。

本文将介绍一些常用的JAVA图像处理工具和技术,并探讨其在实际应用中的优势和挑战。

一、图像处理工具1. OpenCVOpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。

它支持多种编程语言,包括JAVA。

通过使用OpenCV,开发人员可以轻松实现图像的读取、显示、滤波、边缘检测等常见操作。

同时,OpenCV还提供了一些高级功能,如人脸检测、目标跟踪等,使得图像处理更加便捷和高效。

2. Java Advanced Imaging (JAI)JAI是JAVA平台上的一组图像处理API,提供了丰富的图像处理功能。

它支持图像的读取、写入、缩放、旋转、滤波等操作,并且可以处理多种图像格式。

JAI还提供了一些高级功能,如图像合成、图像分析等,使得开发人员能够更加灵活地进行图像处理。

3. ImageJImageJ是一款基于JAVA的开源图像处理软件,提供了丰富的图像处理和分析功能。

它支持图像的读取、显示、滤波、分割等操作,并且提供了一些常用的图像分析算法,如形态学操作、图像测量等。

ImageJ还支持插件扩展,使得开发人员可以根据需求添加自定义的图像处理功能。

二、图像识别技术1. 机器学习机器学习是一种广泛应用于图像识别的技术。

通过训练模型,机器可以从大量的图像数据中学习特征,并对新的图像进行分类和识别。

JAVA提供了一些机器学习库,如Weka和DL4J,可以帮助开发人员实现图像分类、目标检测等任务。

2. 深度学习深度学习是一种基于神经网络的图像识别技术。

它通过多层次的神经网络模型,可以学习到更加复杂的图像特征,并实现更高精度的图像识别。

JAVA提供了一些深度学习库,如Deeplearning4j和DL4J,可以帮助开发人员构建和训练深度学习模型。

java 通过浏览器读取客户端文件的方法

java 通过浏览器读取客户端文件的方法

java 通过浏览器读取客户端文件的方法Java通过浏览器读取客户端文件的方法介绍在Web开发中,经常需要从浏览器读取客户端文件,Java提供了多种方法来实现这一功能。

本文将详细介绍几种常用的方法。

方法一:使用HTML表单上传文件1.在HTML中,使用<input type="file">元素创建一个文件上传表单。

2.在Java中,使用HttpServletRequest对象的getPart方法获取上传的文件。

3.使用Part对象的getInputStream方法获取文件的输入流,进而读取文件的内容。

方法二:使用Apache Commons FileUpload库1.引入Apache Commons FileUpload库的依赖。

2.在Java中,使用ServletFileUpload类解析上传的文件。

3.使用FileItem类获取文件的输入流,进而读取文件的内容。

方法三:使用Spring MVC框架的MultipartResolver1.在Spring MVC配置文件中配置MultipartResolver,例如使用CommonsMultipartResolver。

2.在Java中,使用MultipartFile对象获取上传的文件。

3.使用MultipartFile对象的getInputStream方法获取文件的输入流,进而读取文件的内容。

方法四:使用Servlet的InputStream获取请求体1.在Java中,使用HttpServletRequest对象的getInputStream方法获取请求体的输入流。

2.使用输入流读取请求体的内容。

3.根据请求体的格式解析文件的内容,例如使用multipart/form-data格式。

方法五:使用WebSocket传输文件1.在Java中,使用WebSocket处理客户端的请求。

2.在WebSocket中,使用ByteBuffer对象接收和发送文件的内容。

java获取文件内容的方法

java获取文件内容的方法

java获取文件内容的方法Java是一种功能强大的编程语言,它提供了丰富的API(应用程序接口)来操作文件和读取文件内容。

在本文中,我们将介绍几种常用的方法来获取文件内容。

1. 使用File类Java中的File类提供了许多方法来操作文件。

要获取文件内容,我们可以使用File类的方法之一——`readLines()`。

这个方法会将文件的内容读取到一个字符串列表中,每一行作为一个元素。

```javaimport java.io.File;import java.io.IOException;import java.nio.file.Files;import java.util.List;public class ReadFileExample {public static void main(String[] args) {File file = new File("path/to/file.txt");try {List<String> lines = Files.readAllLines(file.toPath());for (String line : lines) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}```在上面的示例中,我们首先创建一个File对象,指定要读取的文件的路径。

然后,我们使用Files类的`readAllLines()`方法将文件内容读取到一个字符串列表中。

最后,我们使用循环遍历这个列表,并输出每一行的内容。

2. 使用BufferedReader类除了使用File类,我们还可以使用BufferedReader类来读取文件内容。

这个类提供了一种更高效的方式来逐行读取文件。

```javaimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ReadFileExample {public static void main(String[] args) {String filePath = "path/to/file.txt";try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {String line;while ((line = reader.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}```在上面的示例中,我们首先创建一个BufferedReader对象,使用FileReader来读取文件。

Java实现读取excel中的数据及图片

Java实现读取excel中的数据及图片

Java实现读取excel中的数据及图⽚⼀、背景需要完成excel数据的读取与落库⼆、实现Java读取excel数据:指定某⼀⾏,读取整列的数据/*如果是xls格式,使⽤HSSFWorkbook,HSSFSheet,HSSFRow来进⾏相关操作如果是xlsx格式,使⽤XSSFWorkbook,XSSFSheet,XSSFRow来进⾏相关操作,⽬前只⽀持xlsx*/public static HashMap readExcelData(String filename, Integer row, Integer column,Integer sheet) throws IOException {//⽤于存储Exce读取数据HashMap<Integer,String> hashMap=new HashMap();("开始读取excel数据");//读取excel数据File file = ResourceUtils.getFile(filename);InputStream inputStream = new FileInputStream(file);XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);//获取sheet表格,及读取单元格内容XSSFSheet xssfSheet=xssfWorkbook.getSheetAt(sheet);//先将获取的单元格设置为String类型,下⾯使⽤getStringCellValue获取单元格内容Integer cellIndex = 0;while(cellIndex<=column){//第⼀列为空时直接,赋值为空if (xssfSheet.getRow(row)==null || xssfSheet.getRow(row).getCell(cellIndex)==null){hashMap.put(cellIndex,"");cellIndex++;continue;}xssfSheet.getRow(row).getCell(cellIndex).setCellType(CellType.STRING);String stringValue=xssfSheet.getRow(row).getCell(cellIndex).getStringCellValue();hashMap.put(cellIndex,stringValue);cellIndex++;}("readExcelData:{}",hashMap.toString());return hashMap;}Java读取excel图⽚:获取整个excel的图⽚,可以按照指定的⾏和列来定位读取图⽚/*** 获取Excel中的图⽚* @param xssfSheet* @return*/public static Map<String, XSSFPictureData> getPictures(XSSFSheet xssfSheet){Map<String,XSSFPictureData> map=new HashMap<>();List<XSSFShape> list=xssfSheet.getDrawingPatriarch().getShapes();for (XSSFShape shape:list){XSSFPicture picture = (XSSFPicture) shape;XSSFClientAnchor xssfClientAnchor=(XSSFClientAnchor) picture.getAnchor();XSSFPictureData pdata = picture.getPictureData();// ⾏号-列号String key = xssfClientAnchor.getRow1() + "-" + xssfClientAnchor.getCol1();("key数据:{}",key);map.put(key, pdata);}return map;}实际调⽤测试@Testpublic void test() throws IOException, UnirestException {String filename="classpath:file/org.xlsx";File file = ResourceUtils.getFile(filename);InputStream inputStream = new FileInputStream(file);XSSFWorkbook xssfWorkbook=new XSSFWorkbook(inputStream);Map<String, XSSFPictureData> map=getPictures(xssfWorkbook.getSheetAt(0)); String mapKey="3-15";//指定⾏和列XSSFPictureData xssfPictureData= map.get(mapKey);byte[] data =xssfPictureData.getData();FileOutputStream out = new FileOutputStream("/Users/test12.png");out.write(data);out.close();}}jar包版本<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>。

java yuvimage 的用法

java yuvimage 的用法

Java YuvImage是Android评台上用于处理YUV格式图像数据的类,它提供了方便的方法来处理和转换YUV图像数据。

在本文中,我们将介绍YuvImage类的基本用法,包括创建YuvImage对象、将YUV数据转换为RGB数据和将YuvImage保存为JPEG格式的图片。

一、创建YuvImage对象要创建一个YuvImage对象,我们需要提供YUV格式的图像数据、图像的颜色格式、图像的宽度和高度等信息。

以下是YuvImage类的构造函数:YuvImage(byte[] yuv, int format, int width, int height, int[] strides)其中,参数yuv是YUV格式的图像数据,format是图像的颜色格式,width和height分别是图像的宽度和高度,strides是每个平面的跨度。

在创建YuvImage对象之后,我们可以使用其提供的方法来对YUV图像数据进行处理和转换。

二、将YUV数据转换为RGB数据YUV格式是一种将亮度(Y)和色度(UV)分离的图像格式,它在存储和传输图像数据时可以节省带宽和存储空间。

但在实际显示和处理图像时,通常需要将YUV数据转换为RGB数据。

YuvImage类提供了一个方便的方法来将YUV数据转换为RGB数据:public booleanpressToJpeg(Rect rectangle, int quality, OutputStream stream)该方法可以将YuvImage对象表示的YUV图像数据压缩为JPEG格式的图片,并将结果写入指定的输出流。

参数rectangle指定要压缩的区域,quality指定压缩质量,stream是输出流。

三、将YuvImage保存为JPEG格式的图片除了将YUV数据直接转换为RGB数据外,我们还可以将YuvImage对象保存为JPEG格式的图片。

YuvImage类提供了一个方便的方法来实现这一功能:public booleanpressToJpeg(Rect rectangle, int quality, OutputStream stream)该方法与上一节中介绍的方法相同,可以将YuvImage对象表示的YUV图像数据压缩为JPEG格式的图片,并将结果写入指定的输出流。

java onvif协议使用例子 -回复

java onvif协议使用例子 -回复

java onvif协议使用例子-回复Java ONVIF协议使用例子ONVIF(开放网络视频接口)是一个由主要的安防设备制造商联合制定的开放标准协议,旨在实现不同品牌的安防设备之间的互联互通。

在Java 开发中,我们可以使用ONVIF协议对网络摄像机进行控制和操作。

在本文中,我将为您详细介绍如何使用Java实现ONVIF协议的例子。

第一步:导入ONVIF库首先,我们需要在Java项目中导入ONVIF库。

可以通过Maven或手动添加JAR文件的方式导入。

ONVIF协议的Java实现主要有两个库可供选择,分别是javacv和happytime-5.0.jar。

这两个库都提供了对ONVIF 协议的实现和封装。

第二步:创建设备发现器在使用ONVIF协议控制网络摄像机之前,我们需要先发现设备。

设备发现是通过发送广播消息来搜索网络上的ONVIF设备。

我们可以使用以下代码创建设备发现器:javaDeviceDiscovery deviceDiscovery = new DeviceDiscovery();List<Device> devices = deviceDiscovery.discover();以上代码将返回一个Device对象的列表,每个Device对象表示一个被发现的网络摄像机。

第三步:连接设备当我们得到设备列表后,我们需要与其中的某个设备建立连接,以便后面的操作。

我们可以使用以下代码连接设备:javaDevice device = devices.get(0);device.connect("username", "password");以上代码假设我们已经通过设备发现获取了一个设备,并使用设备的连接方法进行连接。

在连接方法中,我们需要提供设备的用户名和密码。

第四步:获取设备信息一旦成功连接到设备,我们可以通过设备对象获取设备的各种信息。

以下是一些常用的设备信息获取方法:javaString manufacturer = device.getManufacturer();String model = device.getModel();String firmwareVersion = device.getFirmwareVersion();String serialNumber = device.getSerialNumber();String hardwareId = device.getHardwareId();以上代码将分别获取设备的制造商、型号、固件版本、序列号和硬件ID 等信息。

java获取照片信息---Java与图像的EXIF信息

java获取照片信息---Java与图像的EXIF信息

首先介绍一下什么是EXIF,EXIF是Exchangeable Image File的缩写,这是一种专门为数码相机照片设定的格式。

这种格式可以用来记录数字照片的属性信息,例如相机的品牌及型号、相片的拍摄时间、拍摄时所设置的光圈大小、快门速度、ISO等等信息。

除此之外它还能够记录拍摄数据,以及照片格式化方式,这样就可以输出到兼容EXIF格式的外设上,例如照片打印机等。

目前最常见的支持EXIF信息的图片格式是JPG,很多的图像工具都可以直接显示图片的EXIF 信息,包括现在的一些著名的相册网站也提供页面用于显示照片的EXIF信息。

本文主要介绍Java语言如何读取图像的EXIF信息,包括如何根据EXIF信息对图像进行调整以适合用户浏览。

目前最简单易用的EXIF信息处理的Java包是Drew Noakes写的metadata-extractor,该项目最新的版本是2.3.0,支持EXIF 2.2版本。

你可以直接从/code/exif/ 下载该项目的最新版本包括其源码。

需要注意的是,并不是每个JPG图像文件都包含有EXIF信息,你可以在Windows资源管理器单击选中图片后,如果该图片包含EXIF信息,则在窗口状态栏会显示出相机的型号,如下图所示:拍摄设备的型号便是EXIF信息中的其中一个。

下面我们给出一段代码将这个图片的所有的EXIF信息全部打印出来。

package com.liusoft.dlog4j.test;import java.io.File;import java.util.Iterator;import com.drew.imaging.jpeg.JpegMetadataReader;import com.drew.metadata.Directory;import com.drew.metadata.Metadata;import com.drew.metadata.Tag;import com.drew.metadata.exif.ExifDirectory;/*** 测试用于读取图片的EXIF信息* @author Winter Lau*/public class ExifTester {public static void main(String[] args) throws Exception {File jpegFile = new File("D:\\我的文档\\我的相册\\DSCF1749.JPG");Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);Directory exif = metadata.getDirectory(ExifDirectory.class);Iterator tags = exif.getTagIterator();while (tags.hasNext()) {Tag tag = (Tag)tags.next();System.out.println(tag);}}}把metadata-extractor-2.3.0.jar文件加入到类路径中编译并执行上面这段代码后可得到下面的运行结果:[Exif] Make - FUJIFILM[Exif] Model - FinePix A205S[Exif] Orientation - Top, left side (Horizontal / normal)[Exif] X Resolution - 72 dots per inch[Exif] Y Resolution - 72 dots per inch[Exif] Resolution Unit - Inch[Exif] Software - Digital Camera FinePix A205S Ver1.00[Exif] Date/Time - 2005:05:13 22:18:49[Exif] YCbCr Positioning - Datum point[Exif] Copyright -[Exif] Exposure Time - 1/60 sec[Exif] F-Number - F3[Exif] Exposure Program - Program normal[Exif] ISO Speed Ratings - 320[Exif] Exif Version - 2.20[Exif] Date/Time Original - 2005:05:13 22:18:49[Exif] Date/Time Digitized - 2005:05:13 22:18:49[Exif] Components Configuration - YCbCr[Exif] Compressed Bits Per Pixel - 3 bits/pixel[Exif] Shutter Speed Value - 1/63 sec[Exif] Aperture Value - F3[Exif] Brightness Value - -61/100[Exif] Exposure Bias Value - 0 EV[Exif] Max Aperture Value - F3[Exif] Metering Mode - Multi-segment[Exif] Light Source - Unknown[Exif] Flash - Flash fired, auto[Exif] Focal Length - 5.5 mm[Exif] FlashPix Version - 1.00[Exif] Color Space - sRGB[Exif] Exif Image Width - 1280 pixels[Exif] Exif Image Height - 960 pixels[Exif] Focal Plane X Resolution - 1/2415 cm[Exif] Focal Plane Y Resolution - 1/2415 cm[Exif] Focal Plane Resolution Unit - cm[Exif] Sensing Method - One-chip color area sensor[Exif] File Source - Digital Still Camera (DSC)[Exif] Scene Type - Directly photographed image[Exif] Custom Rendered - Normal process[Exif] Exposure Mode - Auto exposure[Exif] White Balance - Auto white balance[Exif] Scene Capture Type - Standard[Exif] Sharpness - None[Exif] Subject Distance Range - Unknown[Exif] Compression - JPEG (old-style)[Exif] Thumbnail Offset - 1252 bytes[Exif] Thumbnail Length - 7647 bytes[Exif] Thumbnail Data - [7647 bytes of thumbnail data]从这个执行的结果我们可以看出该照片是在2005年05月13日22时18分49秒拍摄的,拍摄用的相机型号是富士的FinePix A205S,曝光时间是1/60秒,光圈值F3,焦距5.5毫米,ISO值为320等等。

实现java读取网页内容并下载网页中出现的图片

实现java读取网页内容并下载网页中出现的图片

http:package com;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import .MalformedURLException;import .URL;import java.util.regex.Matcher;import java.util.regex.Pattern;public class GetContentPicture {public void getHtmlPicture(String httpUrl) {URL url;BufferedInputStream in;FileOutputStream file;try {System.out.println("取网络图片");String fileName = httpUrl.substring(stIndexOf("/")); String filePath = "./pic/";url = new URL(httpUrl);in = new BufferedInputStream(url.openStream());file = new FileOutputStream(new File(filePath+fileName));int t;while ((t = in.read()) != -1) {file.write(t);}file.close();in.close();System.out.println("图片获取成功");} catch (MalformedURLException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public String getHtmlCode(String httpUrl) throws IOException {String content ="";URL uu = new URL(httpUrl); // 创建URL类对象BufferedReader ii = new BufferedReader(new InputStreamReader(uu.openStream())); // //使用openStream得到一输入流并由此构造一个BufferedReader对象String input;while ((input = ii.readLine()) != null) { // 建立读取循环,并判断是否有读取值content += input;}ii.close();return content;}public void get(String url) throws IOException {String searchImgReg ="(?x)(src|SRC|background|BACKGROUND)=('|\")/?(([\\w-]+/)*([\\w-]+\\.(jpg |JPG|png|PNG|gif|GIF)))('|\")";String searchImgReg2 ="(?x)(src|SRC|background|BACKGROUND)=('|\")(http://([\\w-]+\\.)+[\\w-]+( :[0-9]+)*(/[\\w-]+)*(/[\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('|\")";String content = this.getHtmlCode(url);System.out.println(content);Pattern pattern = pile(searchImgReg);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println(matcher.group(3));this.getHtmlPicture(url+matcher.group(3));}pattern = pile(searchImgReg2);matcher = pattern.matcher(content);while (matcher.find()) {System.out.println(matcher.group(3));this.getHtmlPicture(matcher.group(3));}// searchImgReg =//"(?x)(src|SRC|background|BACKGROUND)=('|\")/?(([\\w-]+/)*([\\w-]+\\.(jpg |JPG|png|PNG|gif|GIF)))('|\")";}public static void main(String[] args) throws IOException {String url = "/";GetContentPicture gcp = new GetContentPicture();gcp.get(url);}}。

java读取tiff格式图像、像素修改以及格式转换

java读取tiff格式图像、像素修改以及格式转换

java读取tiff格式图像、像素修改以及格式转换javatiff_0">java读取tiff图像的踩坑总结:1.环境:spring boot+maven2.包:imageio ,jai,codec,metadata;还有⼀个从github上⾯下载的。

这⼏个包都不⼤好找,等后续补上下载路径。

import javax.imageio.__;import javax.media.jai.JAI;import com.sun.media.jai.codec.;import com.github.jaiimageio.impl.plugins.tiff.*;主要就是这⼏个了,下⾯是接触到的有关代码。

注意:从外部下载的包加载到本地maven仓库需要使⽤cmd打开输⼊mvn install:install-file -DgroupId=com.sun.media -DartifactId=jai_codec -Dversion=1.1.3 -Dpackaging=jar -Dfile=E:\BaiduNetdiskDownload\jai_codec-1.1.3.jar metadatatiff_15">⾸先:metadata,是tiff图像的元数据,下⾯有两个⽅式。

1.调⽤tiffMetadataReader包,此⽅法⽐较简单,引⼊的包:import com.drew.imaging.tiff.TiffMetadataReader;import com.drew.imaging.tiff.TiffProcessingException;import com.drew.metadata.Directory;import com.drew.metadata.Metadata;import com.drew.metadata.Tag;import org.springframework.boot.autoconfigure.SpringBootApplication;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Iterator;//详细过程:File file = new File("C:/Users/86156/Desktop/Show.tif");BufferedImage bufferedImage = ImageIO.read(file);String[] image = ImageIO.getWriterFileSuffixes();System.out.println(image);System.out.println(bufferedImage);try{Metadata metadata = TiffMetadataReader.readMetadata(file);//输出元数据信息System.out.println(metadata);}catch (tiffProcessingException e){System.out.println("发⽣进程异常");System.out.println(e);}catch (IOException e) {System.out.println("发⽣读取异常");}try{Metadata metadata = TiffMetadataReader.readMetadata(file);Iterable<Directory> a = metadata.getDirectories();for(Directory directory : a) {Iterator<Tag> tag = directory.getTags().iterator();while (tag.hasNext()) {System.out.println(tag.next());}}}catch(TiffProcessingException e){System.out.println("发⽣异常!");System.out.println(e);}System.out.println("执⾏完毕");如果出现读取时是空值:执⾏部分结果如下:包含了tiff图像的长宽和位数即16,这也为后⾯的⼤坑做了铺垫。

java的imageview使用方法

java的imageview使用方法

java的imageview使用方法ImageView是Android中提供的一种用于显示图片的控件,使用起来非常的方便。

在Java中,也可以使用ImageView对图片进行操作和展示。

下面将介绍一下Java中的ImageView使用方法。

步骤一:创建一个ImageView控件创建ImageView的方法如下:```ImageView imageView = new ImageView();```这里可以根据需要设置控件的宽度、高度、位置等属性。

步骤二:加载图片资源要使ImageView真正展示图片,需要将图片资源加载到ImageView中。

可以使用以下方法将图片资源加载到ImageView中:```Image image = new ImageIcon("图片路径").getImage(); imageView = new ImageView(image);```上面的代码中,首先通过ImageIcon构造函数将图片资源路径传入,得到一个ImageIcon对象,然后通过getImage()方法获取到Image对象,最后将Image对象加载到ImageView中。

步骤三:设置图片大小如果需要对图片的大小进行控制,可以使用以下方法:```imageView.setFitWidth(300);imageView.setFitHeight(200);```上面的代码中,首先使用setFitWidth()方法设置图片的宽度,使用setFitHeight()方法设置图片的高度。

步骤四:设置图片位置在Java中,ImageView控件的位置可以在父控件中设置。

可以使用以下方法将ImageView添加到父控件中:```pane.getChildren().add(imageView);```其中,pane是父控件的名字。

步骤五:显示图片最后一步是显示图片,只需启动Java应用程序即可显示图片。

Java读取图片文件的类型(MimeType)

Java读取图片文件的类型(MimeType)

Java读取图⽚⽂件的类型(MimeType)⼀、问题描述在项⽬开发的时候,我们经常会遇到⼀类⽂件上传的问题,就是获取图⽚是哪种格式。

很多情况下,很多⼈都是⽤后缀名去判断,如下所⽰。

if(filename.endsWith(".png") || filename.endsWith(".jpg")){//保存图⽚}else{throw new IOException("Error file format !");}但是这种⽅式相当不可靠,我们可以尝试将zip⽂件、rmvb⽂件、css、js修改后缀名位jpg或者png上传,也可以上传到服务器,这就造成我们服务器上出现了脏数据。

此外,对于有些图⽚⽂件,修改成错误的扩展名,有些浏览器可能⽆法显⽰出此图⽚。

⼆、解决⽅案在计算机系统中,媒体类型(MimeType)的⽂件都有【标识符】,zip、图⽚本⾝属于媒体⽂件,因此我们可以通过编解码的⽅式判断图⽚是否合法。

1、判断标⽰⽅法private static boolean isBMP(byte[] buf){byte[] markBuf = "BM".getBytes(); //BMP图⽚⽂件的前两个字节return compare(buf, markBuf);}private static boolean isICON(byte[] buf) {byte[] markBuf = {0, 0, 1, 0, 1, 0, 32, 32};return compare(buf, markBuf);}private static boolean isWEBP(byte[] buf) {byte[] markBuf = "RIFF".getBytes(); //WebP图⽚识别符return compare(buf, markBuf);}private static boolean isGIF(byte[] buf) {byte[] markBuf = "GIF89a".getBytes(); //GIF识别符if(compare(buf, markBuf)){return true;}markBuf = "GIF87a".getBytes(); //GIF识别符if(compare(buf, markBuf)){return true;}return false;}private static boolean isPNG(byte[] buf) {byte[] markBuf = {(byte) 0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A}; //PNG识别符// new String(buf).indexOf("PNG")>0 //也可以使⽤这种⽅式return compare(buf, markBuf);}private static boolean isJPEGHeader(byte[] buf) {byte[] markBuf = {(byte) 0xff, (byte) 0xd8}; //JPEG开始符return compare(buf, markBuf);}private static boolean isJPEGFooter(byte[] buf)//JPEG结束符{byte[] markBuf = {(byte) 0xff, (byte) 0xd9};return compare(buf, markBuf);}2、核⼼⽅法/*** 获取⽂件的mimeType* @param filename* @return*/private static String getMimeType(String filename){try {String mimeType = readType(filename);return String.format("image/%s", mimeType);} catch (IOException e) {e.printStackTrace();}return null;}/*** 读取⽂件类型* @param filename* @return* @throws IOException*/private static String readType(String filename) throws IOException {FileInputStream fis = null;try {File f = new File(filename);if(!f.exists() || f.isDirectory() || f.length()<8) {throw new IOException("the file ["+f.getAbsolutePath()+"] is not image !");}fis= new FileInputStream(f);byte[] bufHeaders = readInputStreamAt(fis,0,8);if(isJPEGHeader(bufHeaders)){long skiplength = f.length()-2-8; //第⼀次读取时已经读了8个byte,因此需要减掉byte[] bufFooters = readInputStreamAt(fis, skiplength, 2);if(isJPEGFooter(bufFooters)){return "jpeg";}}if(isPNG(bufHeaders)){return "png";}if(isGIF(bufHeaders)){return "gif";}if(isWEBP(bufHeaders)){return "webp";}if(isBMP(bufHeaders)){return "bmp";}if(isICON(bufHeaders)){return "ico";}throw new IOException("the image's format is unkown!");} catch (FileNotFoundException e) {throw e;}finally{try {if(fis!=null) fis.close();} catch (Exception e) {}}}/*** 标⽰⼀致性⽐较* @param buf 待检测标⽰* @param markBuf 标识符字节数组* @return返回false标⽰标⽰不匹配*/private static boolean compare(byte[] buf, byte[] markBuf) {for (int i = 0; i < markBuf.length; i++) {byte b = markBuf[i];byte a = buf[i];if(a!=b){return false;}}return true;}/**** @param fis 输⼊流对象* @param skiplength 跳过位置长度* @param length 要读取的长度* @return字节数组* @throws IOException*/private static byte[] readInputStreamAt(FileInputStream fis, long skiplength, int length) throws IOException {byte[] buf = new byte[length];fis.skip(skiplength); //int read = fis.read(buf,0,length);return buf;}3、测试代码正常测试public class ImageType {public static void main(String[] args) {String filename = "oschina.jpg";String type = getMimeType(filename);System.out.println(type);}}输出image/jpeg修改扩展名测试①修改oschina.jpeg为oschina.png②复制oschina.png删除扩展名public class ImageType {public static void main(String[] args) {String filename = "oschina.png";String type = getMimeType(filename);System.out.println(type);filename = "oschina";type = getMimeType(filename);System.out.println(type);}}输出image/jpegimage/jpeg。

java中的imageio.write 用法 -回复

java中的imageio.write 用法 -回复

java中的imageio.write 用法-回复Java中的imageio.write用法是用来将图片数据写入到指定的文件中。

该方法是Java标准库提供的一个较为常用的图像处理方法,它可以将一张图片保存到本地文件系统中,或者将图片数据写入到其他容器中,比如内存中的字节数组、数据库等。

在Java中,使用imageio.write方法需要先加载相关的图像处理库,具体的操作流程如下:1. 导入相关库首先,需要导入Java标准库中的javax.imageio包和java.io包,以便使用相关的类和方法。

在代码的开头,使用import语句导入这两个包:javaimport javax.imageio.ImageIO;import java.io.*;2. 加载图片使用ImageIO类的静态方法read来加载图片文件。

read方法接受一个File对象作为参数,该对象表示待读取的图片文件。

读取成功后,read方法会返回一个BufferedImage 对象,它包含了图片的所有像素数据:javaFile inputFile = new File("input.jpg");BufferedImage bufferedImage = ImageIO.read(inputFile);3. 写入图片使用ImageIO类的静态方法write来将图片数据写入到指定的文件中。

write方法接受三个参数:一个BufferedImage 对象、一个表示输出文件的字符串和一个表示图片格式的字符串。

代码示例如下:javaFile outputFile = new File("output.jpg");ImageIO.write(bufferedImage, "jpg", outputFile);在写入图片时,需要注意输出文件的路径和文件名。

如果文件不存在,write 方法会自动创建一个新文件;如果文件已存在,write方法会覆盖原文件。

java获取照片信息---Java与图像的EXIF信息

java获取照片信息---Java与图像的EXIF信息

首先介绍一下什么是EXIF,EXIF是Exchangeable Image File的缩写,这是一种专门为数码相机照片设定的格式。

这种格式可以用来记录数字照片的属性信息,例如相机的品牌及型号、相片的拍摄时间、拍摄时所设置的光圈大小、快门速度、ISO等等信息。

除此之外它还能够记录拍摄数据,以及照片格式化方式,这样就可以输出到兼容EXIF格式的外设上,例如照片打印机等。

目前最常见的支持EXIF信息的图片格式是JPG,很多的图像工具都可以直接显示图片的EXIF 信息,包括现在的一些著名的相册网站也提供页面用于显示照片的EXIF信息。

本文主要介绍Java语言如何读取图像的EXIF信息,包括如何根据EXIF信息对图像进行调整以适合用户浏览。

目前最简单易用的EXIF信息处理的Java包是Drew Noakes写的metadata-extractor,该项目最新的版本是2.3.0,支持EXIF 2.2版本。

你可以直接从/code/exif/ 下载该项目的最新版本包括其源码。

需要注意的是,并不是每个JPG图像文件都包含有EXIF信息,你可以在Windows资源管理器单击选中图片后,如果该图片包含EXIF信息,则在窗口状态栏会显示出相机的型号,如下图所示:拍摄设备的型号便是EXIF信息中的其中一个。

下面我们给出一段代码将这个图片的所有的EXIF信息全部打印出来。

package com.liusoft.dlog4j.test;import java.io.File;import java.util.Iterator;import com.drew.imaging.jpeg.JpegMetadataReader;import com.drew.metadata.Directory;import com.drew.metadata.Metadata;import com.drew.metadata.Tag;import com.drew.metadata.exif.ExifDirectory;/*** 测试用于读取图片的EXIF信息* @author Winter Lau*/public class ExifTester {public static void main(String[] args) throws Exception {File jpegFile = new File("D:\\我的文档\\我的相册\\DSCF1749.JPG");Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);Directory exif = metadata.getDirectory(ExifDirectory.class);Iterator tags = exif.getTagIterator();while (tags.hasNext()) {Tag tag = (Tag)tags.next();System.out.println(tag);}}}把metadata-extractor-2.3.0.jar文件加入到类路径中编译并执行上面这段代码后可得到下面的运行结果:[Exif] Make - FUJIFILM[Exif] Model - FinePix A205S[Exif] Orientation - Top, left side (Horizontal / normal)[Exif] X Resolution - 72 dots per inch[Exif] Y Resolution - 72 dots per inch[Exif] Resolution Unit - Inch[Exif] Software - Digital Camera FinePix A205S Ver1.00[Exif] Date/Time - 2005:05:13 22:18:49[Exif] YCbCr Positioning - Datum point[Exif] Copyright -[Exif] Exposure Time - 1/60 sec[Exif] F-Number - F3[Exif] Exposure Program - Program normal[Exif] ISO Speed Ratings - 320[Exif] Exif Version - 2.20[Exif] Date/Time Original - 2005:05:13 22:18:49[Exif] Date/Time Digitized - 2005:05:13 22:18:49[Exif] Components Configuration - YCbCr[Exif] Compressed Bits Per Pixel - 3 bits/pixel[Exif] Shutter Speed Value - 1/63 sec[Exif] Aperture Value - F3[Exif] Brightness Value - -61/100[Exif] Exposure Bias Value - 0 EV[Exif] Max Aperture Value - F3[Exif] Metering Mode - Multi-segment[Exif] Light Source - Unknown[Exif] Flash - Flash fired, auto[Exif] Focal Length - 5.5 mm[Exif] FlashPix Version - 1.00[Exif] Color Space - sRGB[Exif] Exif Image Width - 1280 pixels[Exif] Exif Image Height - 960 pixels[Exif] Focal Plane X Resolution - 1/2415 cm[Exif] Focal Plane Y Resolution - 1/2415 cm[Exif] Focal Plane Resolution Unit - cm[Exif] Sensing Method - One-chip color area sensor[Exif] File Source - Digital Still Camera (DSC)[Exif] Scene Type - Directly photographed image[Exif] Custom Rendered - Normal process[Exif] Exposure Mode - Auto exposure[Exif] White Balance - Auto white balance[Exif] Scene Capture Type - Standard[Exif] Sharpness - None[Exif] Subject Distance Range - Unknown[Exif] Compression - JPEG (old-style)[Exif] Thumbnail Offset - 1252 bytes[Exif] Thumbnail Length - 7647 bytes[Exif] Thumbnail Data - [7647 bytes of thumbnail data]从这个执行的结果我们可以看出该照片是在2005年05月13日22时18分49秒拍摄的,拍摄用的相机型号是富士的FinePix A205S,曝光时间是1/60秒,光圈值F3,焦距5.5毫米,ISO值为320等等。

Java从服务器获得图片输入流InputStream,并使用response输出到页面

Java从服务器获得图片输入流InputStream,并使用response输出到页面

Java从服务器获得图⽚输⼊流InputStream,并使⽤response输出到页⾯1、创建测试类(FileController.java)package com.jeff.controller;import java.io.InputStream;import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.jeff.utils.HttpUtils;@RestControllerpublic class FileController {/**** @description: 从服务器端获得图⽚,并输出到页⾯* @author: Jeff* @date: 2019年12⽉7⽇* @param resp*/@RequestMapping("getImage")public void getImage(HttpServletResponse resp) {// 服务器图⽚urlString urlPath = "http://192.168.1.100:8080/images/jie.jpg";// 从服务器端获得图⽚,并输出到页⾯InputStream inputStream = HttpUtils.getInputStream(urlPath);HttpUtils.writeFile(resp, inputStream);}}2、创建http⼯具类(HttpUtils.java)package com.jeff.utils;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .HttpURLConnection;import .MalformedURLException;import .URL;import javax.servlet.http.HttpServletResponse;public class HttpUtils {/**** @description: 从服务器获得⼀个输⼊流(本例是指从服务器获得⼀个image输⼊流)* @author: Jeff* @date: 2019年12⽉7⽇* @return*/public static InputStream getInputStream(String urlPath) {InputStream inputStream = null;HttpURLConnection httpURLConnection = null;try {URL url = new URL(urlPath);httpURLConnection = (HttpURLConnection) url.openConnection();// 设置⽹络连接超时时间httpURLConnection.setConnectTimeout(3000);// 设置应⽤程序要从⽹络连接读取数据httpURLConnection.setDoInput(true);httpURLConnection.setRequestMethod("GET");int responseCode = httpURLConnection.getResponseCode();System.out.println("responseCode is:" + responseCode);if (responseCode == HttpURLConnection.HTTP_OK) {// 从服务器返回⼀个输⼊流inputStream = httpURLConnection.getInputStream();} else {inputStream = httpURLConnection.getErrorStream();}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return inputStream;}/**** @description: 将输⼊流输出到页⾯* @author: Jeff* @date: 2019年12⽉7⽇* @param resp* @param inputStream*/public static void writeFile(HttpServletResponse resp, InputStream inputStream) { OutputStream out = null;try {out = resp.getOutputStream();int len = 0;byte[] b = new byte[1024];while ((len = inputStream.read(b)) != -1) {out.write(b, 0, len);}out.flush();} catch (IOException e) {e.printStackTrace();} finally {try {if (out != null) {out.close();}} catch (Exception e) {e.printStackTrace();}}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何利用java读取网络照片
如何利用java读取网络照片
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.FileOutputStream;
.HttpURLConnection;
.URL;
.URLConnection;
/*.*读取网络照片,保存到本地
**/
publicclassGetUrlImg{
publicstaticvoidgetUrlImg(StringURLName,Stringtarget)thr owsException{//URLName照片地址
//target本地地址
intHttpResult=0;//服务器返回的状态
URLurl=newURL(URLName);//创建URL
URLConnectionurlconn=url.openConnection();//试图连接并取得返回状态码urlconn.connect();
HttpURLConnectionhttpconn=(HttpURLConnection)urlconn;
HttpResult=httpconn.getResponseCode();
System.out.println(HttpResult);
if(HttpResult!=HttpURLConnection.HTTP_OK)//不等于
HTTP_OK说明连接不成功System.out.print("fail");
else{
intfilesize=urlconn.getContentLength();//取数据长度System.out.println(filesize);
BufferedInputStreambis=newBufferedInputStream(urlconn.ge tInputStream());
BufferedOutputStreambos=newBufferedOutputStream(newFileO utputStream(target));
byte[]buffer=newbyte[1024];//创建存放输入流的缓冲
intnum=-1;//读入的字节数
while(true){
num=bis.read(buffer);//读入到缓冲区
if(num==-1){
bos.flush();
break;//已经读完
}
bos.flush();
bos.write(buffer,0,num);
}
bos.close();
bis.close();
}
}
publicstaticvoidmain(String[]args)throwsException{ GetUrlImg.getUrlImg("java中equals和==的区别。

相关文档
最新文档