純Java實現微信朋友圈分享圖
1.實現分享圖的效果
2.開發環境
2.1 JDK
* oracle‘s jdk 1.8以上
2.2 字體
* 若選擇了微軟雅黑字體又是代碼部署到Linux,則需要安裝微軟雅黑字體,字體安裝方式自行google
3. 加載背景
3.1 加載背景圖
這是使用白色框底來作背景圖[1].
//這里從項目resources加載背景圖,讀文件到輸入流,代碼作了簡列
InputStream background = null
BufferedImage zoomPicture = ImageIO.read(background);
4. 圓頭像的實現
4.1 頭像裁剪
頭像裁剪成半徑
//頭像半徑
public static final int PROFILE_RADIUS = 80;
// 2. 頭像裁剪成圓形
BufferedImage roundedImage = SharedImageUtils.createRoundedImage(new URL(userProfileUrl).openStream(),
SharedImageUtils.PROFILE_RADIUS);
4.2 背景圖上繪畫頭像
繪畫位置
/* 要放置的頭像y坐標 */
public static final int PROFILE_Y = 1056;
/* 要放置的頭像X坐標 */
public static final int PROFILE_X = 90;
//頭像旁邊附帶文字(ps:字體是微軟雅黑,linux不具備有,需要安裝,)
BufferedImage profileImage = SharedImageUtils.mergePicture(zoomPicture,
roundedImage,
nickName + " 為你推薦網批貨源",
SharedImageUtils.PROFILE_X,
SharedImageUtils.PROFILE_Y,
SharedImageUtils.PROFILE_RADIUS,
SharedImageUtils.PROFILE_RADIUS);
5. 商品圖案的顯示
5.1 繪畫的位置和長寬
public static final int COPYWRITER_X = 150;
/* 商店圖案Y位置 */
public static final int SHOP_PIC_Y = 70;
/*商店圖案位置*/
public static final int SHOP_PIC_X = 93;
/* 商店圖案寬度 */
public static final int SHOP_PIC_WIDTH = 900;
/* 商店圖案長度 */
public static final int SHOP_PIC_LENGTH = 950;
5.2 繪畫圖案
shopImage = SharedImageUtils.mergePicture(profileImage, shopImage, null,
SharedImageUtils.SHOP_PIC_X,
SharedImageUtils.SHOP_PIC_Y,
SharedImageUtils.SHOP_PIC_WIDTH, SharedImageUtils.SHOP_PIC_LENGTH);
6. 文案的顯示
6.1 文案繪畫的位置與字體大小
BufferedImage textImage = SharedImageUtils.drawTextInImage(shopImage, "檔口: " + shopName, 150, 1200);
//添加文案
BufferedImage mergeImage = SharedImageUtils.drawTextInImage(textImage, "地址: " + shopAddr, 150, 1280);
7. 二維碼的顯示
7.1 二維碼的大小與位置
/* 要放置的二維碼寬度 */
public static final int QRCODE_WIDTH = 230;
/* 要放置的二維碼長度 */
public static final int QRCODE_LENGTH = 230;
/* 要放置的二維碼Y位置 往下為大值,往上為小值 */
public static final int QRCODE_Y = 1070;
/*要放置的二維碼X位置 往下為大值,往上為小值 */
public static final int QRCODE_X = 740;
7.2 二維碼的繪畫
BufferedImage shopQrBuffer = ImageIO.read(new URL(shopQrUrl));
mergeImage = SharedImageUtils.mergeQrcode(mergeImage,
shopQrBuffer,
"掃描或長按小程序碼",
SharedImageUtils.QRCODE_X,
SharedImageUtils.QRCODE_Y,
SharedImageUtils.QRCODE_WIDTH,
SharedImageUtils.QRCODE_LENGTH);
8. 最終的分享圖
// 5. 生成分享圖
ImageIO.write(mergeImage, "jpg", response.getOutputStream());
9. 源碼
[link](https://picasaweb.google.com/106437634114917759264/6630213808569212145#6630213806186676098 "background.jpg)
這是使用的背景圖是白色框底 ↩︎