关于java处理图片的记录

首先,有两种方式处理图片,一种是base64格式的,一种是流格式的。如果是base64格式的,前端会吧base64格式的字符串传给后台,后台以字符串的形式接受即可,在springmvc中用注解@requestParam()来取值;如果是流格式的传递,前端在提交请求的时候会把提交方式改为multipart/form-data

<form id="form1" method="post" action="upload.do" enctype="multipart/form-data">              

然后后台以@@requestParam()MultipartFile photoFile来获取数据

 InputStream photoInputStream = photoFile.getInputStream();获取流对象
   
        String originalFilename = photoFile.getOriginalFilename();获取文件名


获取流以后用阿里云的oss-sdk-jar和demo

private static final String url = "picturetest1.oss-cn-shanghai.aliyuncs.com";
private static String endpoint = "oss-cn-shanghai.aliyuncs.com";
private static String accessKeyId = "LTAIgjKCyYvQZeZa";
private static String accessKeySecret = "2EETmA6KUNFtqsGpR7f4XcI5Pw2UKe";



public static void unloadPicture(
InputStream input) throws FileNotFoundException{


OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

String file = UUID.randomUUID().toString() + ".jpg";
ossClient.putObject("picturetest1", file, input);
ossClient.shutdown();
String url = "http://"+ UnloadPicture.url + "/" + file;
System.out.println(url);

}

这样就能把图片上传到阿里云了。


第二个问题,如果我需要读取图片的很多信息怎么办


用java读取图片的信息需要用到一个jar包

<dependency> <groupId>com.drewnoakes</groupId>  

<artifactId>metadata-extractor</artifactId>  

<version>2.6.2</version></dependency>

然后

public class ExifTester {  

public static void main(String[] args) throws Exception {  

File jpegFile = new File("/Users/a123/Desktop/1.pic_hd.jpg");  

Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);  

for(Directory directory : metadata.getDirectories()){  

for(Tag tag : directory.getTags()){  

System.out.print("name : " + tag.getTagName() + " -->");  

System.out.println("desc : " + tag.getDescription());  

}  

}  

}

}


得到的信息是这样的,信息很详细

name : Compression Type  -->desc : Baseline
name : Data Precision  -->desc : 8 bits
name : Image Height  -->desc : 2448 pixels
name : Image Width  -->desc : 3264 pixels
name : Number of Components  -->desc : 3
name : Component 1  -->desc : Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
name : Component 2  -->desc : Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
name : Component 3  -->desc : Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
name : Exposure Time  -->desc : 1/33 sec
name : F-Number  -->desc : F2.2
name : Exposure Program  -->desc : Program normal
name : ISO Speed Ratings  -->desc : 125
name : Exif Version  -->desc : 2.21
name : Date/Time Original  -->desc : 2017:10:26 18:58:38
name : Date/Time Digitized  -->desc : 2017:10:26 18:58:38
name : Components Configuration  -->desc : YCbCr
name : Shutter Speed Value  -->desc : 1/33 sec
name : Aperture Value  -->desc : F2.2
name : Brightness Value  -->desc : 1283/716
name : Exposure Bias Value  -->desc : 0 EV
name : Metering Mode  -->desc : Multi-segment
name : Flash  -->desc : Flash did not fire, auto
name : Focal Length  -->desc : 4.15 mm
name : Subject Location  -->desc : 1631 1223 1795 1077
name : Sub-Sec Time Original  -->desc : 593
name : Sub-Sec Time Digitized  -->desc : 593
name : FlashPix Version  -->desc : 1.00
name : Color Space  -->desc : sRGB
name : Exif Image Width  -->desc : 3264 pixels
name : Exif Image Height  -->desc : 2448 pixels
name : Sensing Method  -->desc : One-chip color area sensor
name : Scene Type  -->desc : Directly photographed image
name : Exposure Mode  -->desc : Auto exposure
name : White Balance Mode  -->desc : Auto white balance
name : Focal Length 35  -->desc : 29mm
name : Scene Capture Type  -->desc : Standard
name : Lens Specification  -->desc : 83/20 83/20 11/5 11/5
name : Lens Make  -->desc : Apple
name : Lens Model  -->desc : iPhone 6 back camera 4.15mm f/2.2
name : Make  -->desc : Apple
name : Model  -->desc : iPhone 6
name : Orientation  -->desc : Right side, top (Rotate 90 CW)
name : X Resolution  -->desc : 72 dots per inch
name : Y Resolution  -->desc : 72 dots per inch
name : Resolution Unit  -->desc : Inch
name : Software  -->desc : 10.3.3
name : Date/Time  -->desc : 2017:10:26 18:58:38
name : YCbCr Positioning  -->desc : Center of pixel array
name : GPS Latitude Ref  -->desc : N
name : GPS Latitude  -->desc : 30.0° 12.0' 43.91000000000133"
name : GPS Longitude Ref  -->desc : E
name : GPS Longitude  -->desc : 120.0° 12.0' 18.36000000000581"
name : GPS Altitude Ref  -->desc : Sea level
name : GPS Altitude  -->desc : 29 metres
name : GPS Time-Stamp  -->desc : 10:58:31 UTC
name : GPS Speed Ref  -->desc : kph
name : GPS Speed  -->desc : 0
name : GPS Img Direction Ref  -->desc : True direction
name : GPS Img Direction  -->desc : 157.26 degrees
name : GPS Dest Bearing Ref  -->desc : True direction
name : GPS Dest Bearing  -->desc : 157.26 degrees
name : GPS Date Stamp  -->desc : 2017:10:26
name : Unknown tag (0x001f)  -->desc : 65
name : Thumbnail Compression  -->desc : JPEG (old-style)
name : X Resolution  -->desc : 72 dots per inch
name : Y Resolution  -->desc : 72 dots per inch
name : Resolution Unit  -->desc : Inch
name : Thumbnail Offset  -->desc : 2014 bytes
name : Thumbnail Length  -->desc : 4542 bytes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不写版本的都是耍流氓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值