demo.PicBucketDemo Maven / Gradle / Ivy
package demo;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.UpYun;
import com.UpYun.PARAMS;
import com.upyun.UpException;
/**
* 图片类空间的demo,一般性操作参考文件空间的demo(FileBucketDemo.java)
*
* 注意:直接使用部分图片处理功能后,将会丢弃原图保存处理后的图片
*/
public class PicBucketDemo {
// 运行前先设置好以下三个参数
private static final String BUCKET_NAME = "空间名称";
private static final String OPERATOR_NAME = "操作员名称";
private static final String OPERATOR_PWD = "操作员密码";
/** 绑定的域名 */
private static final String URL = "http://" + BUCKET_NAME
+ ".b0.upaiyun.com";
/** 根目录 */
private static final String DIR_ROOT = "/";
/** 上传到upyun的图片名 */
private static final String PIC_NAME = "sample.jpeg";
/** 本地待上传的测试文件 */
private static final String SAMPLE_PIC_FILE = System
.getProperty("user.dir") + "/sample.jpeg";
private static UpYun upyun = null;
static {
File picFile = new File(SAMPLE_PIC_FILE);
if (!picFile.isFile()) {
System.out.println("本地待上传的测试文件不存在!");
}
}
public static void main(String[] args) throws IOException,UpException {
// 初始化空间
upyun = new UpYun(BUCKET_NAME, OPERATOR_NAME, OPERATOR_PWD);
// ****** 可选设置 begin ******
// 切换 API 接口的域名接入点,默认为自动识别接入点
// upyun.setApiDomain(UpYun.ED_AUTO);
// 设置连接超时时间,默认为30秒
// upyun.setTimeout(60);
// 设置是否开启debug模式,默认不开启
upyun.setDebug(false);
// ****** 可选设置 end ******
/*
* 一般性操作参考文件空间的demo(FileBucketDemo.java)
*
* 注:图片的所有参数均可以自由搭配使用
*/
// 1.上传文件(文件内容)
testWriteFile();
// 2.图片做缩略图;若使用了该功能,则会丢弃原图
testGmkerl();
// 3.图片旋转;若使用了该功能,则会丢弃原图
testRotate();
// 4.图片裁剪;若使用了该功能,则会丢弃原图
testCrop();
}
/**
* 上传文件
*
* @throws IOException
*/
public static void testWriteFile() throws IOException,UpException {
// 要传到upyun后的文件路径
String filePath = DIR_ROOT + PIC_NAME;
// 本地待上传的图片文件
File file = new File(SAMPLE_PIC_FILE);
// 设置待上传文件的 Content-MD5 值
// 如果又拍云服务端收到的文件MD5值与用户设置的不一致,将回报 406 NotAcceptable 错误
upyun.setContentMD5(UpYun.md5(file));
// 设置待上传文件的"访问密钥"
// 注意:
// 仅支持图片空!,设置密钥后,无法根据原文件URL直接访问,需带URL后面加上(缩略图间隔标志符+密钥)进行访问
// 举例:
// 如果缩略图间隔标志符为"!",密钥为"bac",上传文件路径为"/folder/test.jpg",
// 那么该图片的对外访问地址为:http://空间域名 /folder/test.jpg!bac
// 代码示例:upyun.setFileSecret("bac");
// 上传文件,并自动创建父级目录(最多10级)
boolean result = upyun.writeFile(filePath, file, true);
System.out.println(filePath + " 上传" + isSuccess(result));
// 获取上传文件后的信息(仅图片空间有返回数据)
System.out.println("\r\n****** " + file.getName() + " 的图片信息 *******");
// 图片宽度
System.out.println("图片宽度:" + upyun.getPicWidth());
// 图片高度
System.out.println("图片高度:" + upyun.getPicHeight());
// 图片帧数
System.out.println("图片帧数:" + upyun.getPicFrames());
// 图片类型
System.out.println("图片类型:" + upyun.getPicType());
System.out.println("****************************************\r\n");
System.out.println("若设置过访问密钥(bac),且缩略图间隔标志符为'!',则可以通过以下路径来访问图片:");
System.out.println(URL + filePath + "!bac");
System.out.println();
}
/**
* 图片做缩略图
*
* 注意:若使用了缩略图功能,则会丢弃原图
*
* @throws IOException
*/
public static void testGmkerl() throws IOException,UpException {
// 要传到upyun后的文件路径
String filePath = DIR_ROOT + "gmkerl.jpg";
// 本地待上传的图片文件
File file = new File(SAMPLE_PIC_FILE);
// 设置缩略图的参数
Map params = new HashMap();
// 设置缩略图类型,必须搭配缩略图参数值(KEY_VALUE)使用,否则无效
params.put(PARAMS.KEY_X_GMKERL_TYPE.getValue(),
PARAMS.VALUE_FIX_BOTH.getValue());
// 设置缩略图参数值,必须搭配缩略图类型(KEY_TYPE)使用,否则无效
params.put(PARAMS.KEY_X_GMKERL_VALUE.getValue(), "150x150");
// 设置缩略图的质量,默认 95
params.put(PARAMS.KEY_X_GMKERL_QUALITY.getValue(), "95");
// 设置缩略图的锐化,默认锐化(true)
params.put(PARAMS.KEY_X_GMKERL_UNSHARP.getValue(), "true");
// 若在 upyun 后台配置过缩略图版本号,则可以设置缩略图的版本名称
// 注意:只有存在缩略图版本名称,才会按照配置参数制作缩略图,否则无效
params.put(PARAMS.KEY_X_GMKERL_THUMBNAIL.getValue(), "small");
// 上传文件,并自动创建父级目录(最多10级)
boolean result = upyun.writeFile(filePath, file, true, params);
System.out.println(filePath + " 制作缩略图" + isSuccess(result));
System.out.println("可以通过该路径来访问图片:" + URL + filePath);
System.out.println();
}
/**
* 图片旋转
*
* @throws IOException
*/
public static void testRotate() throws IOException,UpException {
// 要传到upyun后的文件路径
String filePath = DIR_ROOT + "rotate.jpg";
// 本地待上传的图片文件
File file = new File(SAMPLE_PIC_FILE);
// 图片旋转功能具体可参考:http://wiki.upyun.com/index.php?title=图片旋转
Map params = new HashMap();
// 设置图片旋转:只接受"auto","90","180","270"四种参数
params.put(PARAMS.KEY_X_GMKERL_ROTATE.getValue(),
PARAMS.VALUE_ROTATE_90.getValue());
// 上传文件,并自动创建父级目录(最多10级)
boolean result = upyun.writeFile(filePath, file, true, params);
System.out.println(filePath + " 图片旋转" + isSuccess(result));
System.out.println("可以通过该路径来访问图片:" + URL + filePath);
System.out.println();
}
/**
* 图片裁剪
*
* @throws IOException
*/
public static void testCrop() throws IOException,UpException {
// 要传到upyun后的文件路径
String filePath = DIR_ROOT + "crop.jpg";
// 本地待上传的图片文件
File file = new File(SAMPLE_PIC_FILE);
// 图片裁剪功能具体可参考:http://wiki.upyun.com/index.php?title=图片裁剪
Map params = new HashMap();
// 设置图片裁剪,参数格式:x,y,width,height
params.put(PARAMS.KEY_X_GMKERL_CROP.getValue(), "50,50,300,300");
// 上传文件,并自动创建父级目录(最多10级)
boolean result = upyun.writeFile(filePath, file, true, params);
System.out.println(filePath + " 图片裁剪" + isSuccess(result));
System.out.println("可以通过该路径来访问图片:" + URL + filePath);
System.out.println();
}
private static String isSuccess(boolean result) {
return result ? " 成功" : " 失败";
}
}