生成二维码并上传七牛云

依赖导入

 <!--生成二维码-->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.yunpian.sdk</groupId>
            <artifactId>yunpian-java-sdk</artifactId>
            <version>1.2.7</version>
        </dependency>

自动生成二维码

package com.ujiol.common.util;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.HashMap;
import java.util.UUID;

//生成二维码

/**
 * content 二维码内容
 */
public class CreateQRCode {
    public static MultipartFile doCreateQRCode(String content) {
        int width = 300;        //定义图片宽度
        int height = 300;       //定义图片高度
        String format = "png";      //定义图片格式

        //定义二维码的参数
        HashMap hashMap = new HashMap();
        hashMap.put(EncodeHintType.CHARACTER_SET, "utf-8");     //设置编码
        hashMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);       //设置容错等级,等级越高,容量越小
        hashMap.put(EncodeHintType.MARGIN, 2);          //设置边距
        //生成二维码
        try {
            //生成矩阵
            // 内容格式宽、高
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hashMap);
            System.out.println(bitMatrix);
            BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);//转换成为bufferimage

            //创建一个ByteArrayOutputStream
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            //把BufferedImage写入ByteArrayOutputStream
            ImageIO.write(bufferedImage, format, os);
            //ByteArrayOutputStream转成InputStream
            InputStream input = new ByteArrayInputStream(os.toByteArray());
            //InputStream转成MultipartFile
            UUID uuid = UUID.randomUUID();
            MultipartFile multipartFile = new MockMultipartFile(uuid + "", input);
            System.out.println(multipartFile);
            return multipartFile;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
}

链接七牛云

package com.ujiol.common.util;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * @Description: 七牛工具
 * @author liyijun
 * @date 2018/03/13
 */
@Component
public class QiniuUtils {
	private static final String ACCESS_KEY = "*****************************";
    private static final String SECRET_KEY = "********************";
    public static final String ZTCM_ADVIDEO_BUCKET = "******";
    public static final String ZTCM_ADVIDEO_BUCKET_DOMAIN = "*******************";
	// 构造一个带指定Zone对象的配置类
	private static Configuration cfg = new Configuration(Zone.zone1());
	private static UploadManager uploadManager = new UploadManager(cfg);

	/**
	 * 创建七牛上传令牌
	 * 
	 * @param bucket
	 *            仓库名称
	 * @return String 上传令牌
	 */
	public static String buildUptoken(String bucket) {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		String uptoken = auth.uploadToken(bucket);
		return uptoken;
	}

	/**
	 * 上传文件
	 * 
	 * @param file
	 *            文件对象
	 * @return String 文件链接(失败则返回null)
	 */
	public static String upload(MultipartFile file) {
		if (file != null && !file.isEmpty()) {
			try {
				InputStream stream = file.getInputStream();
				String key = UUID.randomUUID().toString() + getExtensionWithDot(file);
				String token = buildUptoken(ZTCM_ADVIDEO_BUCKET);
				String mime = file.getContentType();
				Response response = uploadManager.put(stream, key, token, null, mime);
				DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

				String url = ZTCM_ADVIDEO_BUCKET_DOMAIN + putRet.key;

				return url;
			} catch (QiniuException ex) {
				ex.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}

	/**
	 * 上传图片
	 * 
	 * @param file
	 *            文件对象
	 * @return String 文件链接(失败则返回null)
	 */
	public static String uploadImg(MultipartFile file) {
		if (file != null && !file.isEmpty()) {
			try {
				InputStream stream = file.getInputStream();
				String key = UUID.randomUUID().toString() + getExtensionWithDot(file);
				String token = buildUptoken(ZTCM_ADVIDEO_BUCKET);
				String mime = file.getContentType();

				Response response = uploadManager.put(stream, key, token, null, mime);
				DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

				String url = ZTCM_ADVIDEO_BUCKET + putRet.key;

				return url;
			} catch (QiniuException ex) {
				ex.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}

	public static String uploadImg(File file) {
		if (file != null) {
			try {
				String dot = file.getName().substring(file.getName().lastIndexOf("."));
				String key = UUID.randomUUID().toString() + dot;
				String token = buildUptoken(ZTCM_ADVIDEO_BUCKET);
				Response response = uploadManager.put(file, key, token);
				DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
				String url = ZTCM_ADVIDEO_BUCKET + putRet.key;
				return url;
			} catch (QiniuException ex) {
				ex.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}

	/**
	 * 删除图片文件
	 * 
	 * @param key
	 *            图片Key
	 * @return boolean 是否成功删除
	 * @throws IOException
	 */
	public static boolean delete(String key) {
		Response response = null;
		try {
			response = new BucketManager(Auth.create(ACCESS_KEY, SECRET_KEY), cfg).delete(ZTCM_ADVIDEO_BUCKET, key);
		} catch (QiniuException e) {
			e.printStackTrace();
		}
		return response != null ? response.isOK() : false;
	}

	/**
	 * 获取文件扩展名
	 * 
	 * @param file
	 *            文件对象
	 * @return String 扩展名(无效文件返回null)
	 */
	public static String getExtension(MultipartFile file) {
		if (file != null && !file.isEmpty()) {
			String extension = "";
			String fileName = file.getOriginalFilename();
			if (fileName.contains(".")) {
				extension = fileName.substring(fileName.lastIndexOf(".") + 1);
			}
			return extension;
		}
		return null;
	}

	/**
	 * 获取文件扩展名加Dot
	 * 
	 * @param file
	 *            文件对象
	 * @return String 扩展名(无效文件返回null)
	 */
	public static String getExtensionWithDot(MultipartFile file) {
		String extension = getExtension(file);
		if (extension != null && extension.length() > 0) {
			return "." + extension;
		}
		return extension;
	}

}

测试单元接口

package com.ujiol.system.controller;

import com.ujiol.common.util.CreateQRCode;
import com.ujiol.common.util.QiniuUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

@RestController
@RequestMapping("/refuel")
public class TestImage {
    @RequestMapping("/zz")
    public String doUpload(){
        MultipartFile multipartFile = CreateQRCode.doCreateQRCode(UUID.randomUUID()+"");
        String upload = QiniuUtils.upload(multipartFile);
        return upload;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 C# 中使用 Microsoft.Office.Interop.Excel 库实现获取 Excel 单元格图片并上传七牛云的代码示例: ```csharp using Excel = Microsoft.Office.Interop.Excel; using Qiniu.Storage; using Qiniu.Util; using System.IO; // 获取 Excel 单元格图片并上传七牛云,参数 cell 为单元格对象 private void UploadImageToQiniu(Excel.Range cell) { Excel.Workbook workbook = cell.Worksheet.Parent as Excel.Workbook; string filePath = Path.GetTempFileName() + ".jpg"; // 生成临时文件路径 cell.CopyPicture(Excel.XlPictureAppearance.xlScreen, Excel.XlCopyPictureFormat.xlBitmap); // 复制单元格图片到剪切板 IDataObject clipboardData = Clipboard.GetDataObject(); if (clipboardData != null) { MemoryStream ms = clipboardData.GetData(DataFormats.Bitmap) as MemoryStream; if (ms != null) { using (FileStream fs = new FileStream(filePath, FileMode.Create)) { ms.WriteTo(fs); // 将剪切板中的图片保存到本地 } // 上传图片到七牛云 string accessKey = "your_access_key"; string secretKey = "your_secret_key"; string bucket = "your_bucket_name"; string key = "your_key"; // 上传后的文件名 Mac mac = new Mac(accessKey, secretKey); PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = bucket; string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); FormUploader formUploader = new FormUploader(); HttpResult result = formUploader.UploadFile(filePath, key, token, null); if (result.Code == 200) { Console.WriteLine("Upload success."); } else { Console.WriteLine("Upload failed. Error code: " + result.Code); } } } } ``` 在上述代码中,我们首先引入了 Microsoft.Office.Interop.Excel 和 Qiniu.Storage 库,并声明了一个 UploadImageToQiniu 方法,该方法接收一个单元格对象 cell,并将该单元格中的图片上传七牛云。 在方法中,我们首先获取了包含该单元格的 Excel 文件对象,并生成了一个临时文件路径。接着,我们使用 CopyPicture 方法将单元格图片复制到剪切板,然后从剪切板中获取图片数据,并将其保存到本地临时文件中。 最后,我们使用七牛云的 SDK 将文件上传到指定的空间中,并输出上传结果。在上传前,我们需要先设置好自己的访问密钥、空间名和上传后的文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值