![JAR search and dependency download from the Maven repository](/logo.png)
com.avos.avoscloud.im.v2.messages.AVIMImageMessage Maven / Gradle / Ivy
The newest version!
package com.avos.avoscloud.im.v2.messages;
import com.alibaba.fastjson.JSON;
import com.avos.avoscloud.AVException;
import com.avos.avoscloud.AVFile;
import com.avos.avoscloud.AVHttpClient;
import com.avos.avoscloud.AVUtils;
import com.avos.avoscloud.GenericObjectCallback;
import com.avos.avoscloud.GetHttpResponseHandler;
import com.avos.avoscloud.SaveCallback;
import com.avos.avoscloud.im.v2.AVIMMessageCreator;
import com.avos.avoscloud.im.v2.AVIMMessageType;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import okhttp3.Request;
@AVIMMessageType(type = AVIMMessageType.IMAGE_MESSAGE_TYPE)
public class AVIMImageMessage extends AVIMFileMessage {
static final String IMAGE_HEIGHT = "height";
static final String IMAGE_WIDTH = "width";
public AVIMImageMessage() {
}
public AVIMImageMessage(String localPath) throws IOException {
super(localPath);
}
public AVIMImageMessage(File localFile) throws IOException {
super(localFile);
}
public AVIMImageMessage(AVFile file) {
super(file);
}
/**
* 获取文件的metaData
*
* @return
*/
@Override
public Map getFileMetaData() {
if (file == null) {
file = new HashMap();
}
if (file.containsKey(FILE_META)) {
return (Map) file.get(FILE_META);
}
if (localFile != null) {
Map meta = AVIMFileMessageAccessor.getImageMeta(localFile);
meta.put(FILE_SIZE, actualFile.getSize());
file.put(FILE_META, meta);
return meta;
} else if (actualFile != null) {
Map meta = actualFile.getMetaData();
file.put(FILE_META, meta);
return meta;
}
return null;
}
/**
* 获取图片的高
*
* @return
*/
public int getHeight() {
Map metaData = getFileMetaData();
if (metaData != null && metaData.containsKey(IMAGE_HEIGHT)) {
return parseIntValue(metaData.get(IMAGE_HEIGHT));
}
return 0;
}
/**
* 获取图片的宽度
*
* @return
*/
public int getWidth() {
Map metaData = getFileMetaData();
if (metaData != null && metaData.containsKey(IMAGE_WIDTH)) {
return parseIntValue(metaData.get(IMAGE_WIDTH));
}
return 0;
}
private static int parseIntValue(Object value) {
if (null != value) {
if (value instanceof Integer || value instanceof Long) {
return (int)value;
} else if (value instanceof Double) {
return (int)((double) value);
} else if (value instanceof BigDecimal) {
return ((BigDecimal) value).intValue();
}
}
return 0;
}
@Override
protected void getAdditionalMetaData(final Map meta, final SaveCallback callback) {
if (!AVUtils.isBlankString(actualFile.getUrl()) && localFile == null
&& !isExternalAVFile(actualFile)) {
AVHttpClient client = AVHttpClient.clientInstance();
Request.Builder builder = new Request.Builder();
builder.url(actualFile.getUrl() + "?imageInfo").get();
client.execute(builder.build(), false, new GetHttpResponseHandler(
new GenericObjectCallback() {
@Override
public void onSuccess(String content, AVException e) {
try {
com.alibaba.fastjson.JSONObject response = JSON.parseObject(content);
meta.put(FORMAT, response.getString(FORMAT));
meta.put(IMAGE_HEIGHT, response.getInteger(IMAGE_HEIGHT));
meta.put(IMAGE_WIDTH, response.getInteger(IMAGE_WIDTH));
} catch (Exception e1) {
callback.internalDone(new AVException(e1));
}
callback.internalDone(null);
}
@Override
public void onFailure(Throwable error, String content) {
callback.internalDone(new AVException(error));
}
@Override
public boolean isRequestStatisticNeed() {
return false;
}
}));
} else {
callback.internalDone(null);
}
}
public static final Creator CREATOR = new AVIMMessageCreator(AVIMImageMessage.class);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy