首先,有两种方式处理图片,一种是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