到大型節假日,我們常會發現社交平臺都會提供生成頭像裝飾的小工具,很是新奇好玩。如果從技術的維度看,這類平臺 / 工具一般都是通過下面兩個方法給我們生成頭像裝飾的:
增加頭像裝飾的功能其實很容易實現,首先選擇一張圖片,上傳自己的頭像,然后函數部分進行圖像的合成,這一部分并沒有涉及到機器學習算法,僅僅是圖像合成相關算法。
通過用戶上傳的圖片,在指定位置增加預定圖片 / 用戶選擇的圖片作為裝飾物進行添加:
復制代碼
def do_circle(base_pic): icon_pic=Image.open(base_pic).convert("RGBA") icon_pic=icon_pic.resize((500, 500), Image.ANTIALIAS) icon_pic_x, icon_pic_y=icon_pic.size temp_icon_pic=Image.new('RGBA', (icon_pic_x + 600, icon_pic_y + 600), (255, 255, 255)) temp_icon_pic.paste(icon_pic, (300, 300), icon_pic) ima=temp_icon_pic.resize((200, 200), Image.ANTIALIAS) size=ima.size # 因為是要圓形,所以需要正方形的圖片 r2=min(size[0], size[1]) if size[0] !=size[1]: ima=ima.resize((r2, r2), Image.ANTIALIAS) # 最后生成圓的半徑 r3=60 imb=Image.new('RGBA', (r3 * 2, r3 * 2), (255, 255, 255, 0)) pima=ima.load() # 像素的訪問對象 pimb=imb.load() r=float(r2 / 2) # 圓心橫坐標 for i in range(r2): for j in range(r2): lx=abs(i - r) # 到圓心距離的橫坐標 ly=abs(j - r) # 到圓心距離的縱坐標 l=(pow(lx, 2) + pow(ly, 2)) ** 0.5 # 三角函數 半徑 if l < r3: pimb[i - (r - r3), j - (r - r3)]=pima[i, j] return imb
復制代碼
def add_decorate(base_pic): try: base_pic="./base/%s.png" % (str(base_pic)) user_pic=Image.open("/tmp/picture.png").convert("RGBA") temp_basee_user_pic=Image.new('RGBA', (440, 440), (255, 255, 255)) user_pic=user_pic.resize((400, 400), Image.ANTIALIAS) temp_basee_user_pic.paste(user_pic, (20, 20)) temp_basee_user_pic.paste(do_circle(base_pic), (295, 295), do_circle(base_pic)) temp_basee_user_pic.save("/tmp/output.png") return True except Exception as e: print(e) return False
復制代碼
def test(): with open("test.png", 'rb') as f: image=f.read() image_base64=str(base64.b64encode(image), encoding='utf-8') event={ "requestContext": { "serviceId": "service-f94sy04v", "path": "/test/{path}", "httpMethod": "POST", "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef", "identity": { "secretId": "abdcdxxxxxxxsdfs" }, "sourceIp": "14.17.22.34", "stage": "release" }, "headers": { "Accept-Language": "en-US,en,cn", "Accept": "text/html,application/xml,application/json", "Host": "service-3ei3tii4-251000691.ap-guangzhou.apigateway.myqloud.com", "User-Agent": "User Agent String" }, "body": "{\"pic\":\"%s\", \"base\":\"1\"}" % image_base64, "pathParameters": { "path": "value" }, "queryStringParameters": { "foo": "bar" }, "headerParameters": { "Refer": "10.0.2.14" }, "stageVariables": { "stage": "release" }, "path": "/test/value", "queryString": { "foo": "bar", "bob": "alice" }, "httpMethod": "POST" } print(main_handler(event, None)) if __name__=="__main__": test()
復制代碼
def return_msg(error, msg): return_data={ "uuid": str(uuid.uuid1()), "error": error, "message": msg } print(return_data) return return_data
復制代碼
import base64, jsonfrom PIL import Imageimport uuid def main_handler(event, context): try: print(" 將接收到的 base64 圖像轉為 pic") imgData=base64.b64decode(json.loads(event["body"])["pic"].split("base64,")[1]) with open('/tmp/picture.png', 'wb') as f: f.write(imgData) basePic=json.loads(event["body"])["base"] addResult=add_decorate(basePic) if addResult: with open("/tmp/output.png", "rb") as f: base64Data=str(base64.b64encode(f.read()), encoding='utf-8') return return_msg(False, {"picture": base64Data}) else: return return_msg(True, " 飾品添加失敗 ") except Exception as e: return return_msg(True, " 數據處理異常: %s" % str(e))
完成后端圖像合成功能,制作前端頁面:
復制代碼
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>2020 頭像大變樣 - 頭像 SHOW - 自豪的采用騰訊云 Serverless 架構!</title> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <script type="text/javascript"> thisPic=null function getFileUrl(sourceId) { var url; thisPic=document.getElementById(sourceId).files.item(0) if (navigator.userAgent.indexOf("MSIE") >=1) { // IE url=document.getElementById(sourceId).value; } else if (navigator.userAgent.indexOf("Firefox") > 0) { // Firefox url=window.URL.createObjectURL(document.getElementById(sourceId).files.item(0)); } else if (navigator.userAgent.indexOf("Chrome") > 0) { // Chrome url=window.URL.createObjectURL(document.getElementById(sourceId).files.item(0)); } return url; } function preImg(sourceId, targetId) { var url=getFileUrl(sourceId); var imgPre=document.getElementById(targetId); imgPre.aaaaaa=url; imgPre.style="display: block;"; } function clickChose() { document.getElementById("imgOne").click() } function getNewPhoto() { document.getElementById("result").innerText=" 系統處理中,請稍后..." var oFReader=new FileReader(); oFReader.readAsDataURL(thisPic); oFReader.onload=function (oFREvent) { var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 瀏覽器執行代碼 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function () { if (xmlhttp.readyState==4 && xmlhttp.status==200) { if (JSON.parse(xmlhttp.responseText)["error"]) { document.getElementById("result").innerText=JSON.parse(xmlhttp.responseText)["message"]; } else { document.getElementById("result").innerText=" 長按保存圖像 "; document.getElementById("new_photo").aaaaaa="data:image/png;base64," + JSON.parse(xmlhttp.responseText)["message"]["picture"]; document.getElementById("new_photo").style="display: block;"; } } } var url=" http://service-8d3fi753-1256773370.bj.apigw.tencentcs.com/release/new_year_add_photo_decorate" var obj=document.getElementsByName("base"); var baseNum="1" for (var i=0; i < obj.length; i++) { console.log(obj[i].checked) if (obj[i].checked) { baseNum=obj[i].value; } } xmlhttp.open("POST", url, true); xmlhttp.setRequestHeader("Content-type", "application/json"); var postData={ pic: oFREvent.target.result, base: baseNum } xmlhttp.send(JSON.stringify(postData)); } } </script> <!-- 標準 mui.css--> <link rel="stylesheet" href="./css/mui.min.css"></head><body><h3 style="text-align: center; margin-top: 30px">2020 頭像 SHOW</h3><div class="mui-card"> <div class="mui-card-content"> <div class="mui-card-content-inner"> 第一步:選擇一個你喜歡的圖片 </div> </div> <div class="mui-content"> <ul class="mui-table-view mui-grid-view mui-grid-9"> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/1.png" width="100%"><input type="radio" name="base" value="1" checked></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/2.png" width="100%"><input type="radio" name="base" value="2"></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/11.png" width="100%"><input type="radio" name="base" value="11"></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/4.png" width="100%"><input type="radio" name="base" value="4"></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/5.png" width="100%"><input type="radio" name="base" value="5"></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/6.png" width="100%"><input type="radio" name="base" value="6"></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/12.png" width="100%"><input type="radio" name="base" value="12"></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/8.png" width="100%"><input type="radio" name="base" value="8"></label></li> <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><label> <img aaaaaa="./base/3.png" width="100%"><input type="radio" name="base" value="3"></label></li> </ul> </div></div><div class="mui-card"> <div class="mui-card-content"> <div class="mui-card-content-inner"> 第二步:上傳一張你的頭像 </div> <div> <form> <input type="file" name="imgOne" id="imgOne" onchange="preImg(this.id, 'photo')" style="display: none;" accept="image/*"> <center style="margin-bottom: 10px"> <input type="button" value=" 點擊此處上傳頭像 " onclick="clickChose()"/> <img id="photo" aaaaaa="" width="300px" , height="300px" style="display: none;"/> </center> </form> </div> </div></div><div class="mui-card"> <div class="mui-card-content"> <div class="mui-card-content-inner"> 第三步:點擊生成按鈕獲取新年頭像 </div> <div> <center style="margin-bottom: 10px"> <input type="button" value=" 生成新年頭像 " onclick="getNewPhoto()"/> <p id="result"></p> <img id="new_photo" aaaaaa="" width="300px" , height="300px" style="display: none;"/> </center> </div> </div></div><p style="text-align: center"> 本項目自豪的 <br> 通過 Serverless Framework<br> 搭建在騰訊云 SCF 上</p></body></html>
完成之后:
復制代碼
new_year_add_photo_decorate: component: "@serverless/tencent-scf" inputs: name: myapi_new_year_add_photo_decorate codeUri: ./new_year_add_photo_decorate handler: index.main_handler runtime: Python3.6 region: ap-beijing description: 新年為頭像增加飾品 memorySize: 128 timeout: 5 events: - apigw: name: serverless parameters: serviceId: service-8d3fi753 environment: release endpoints: - path: /new_year_add_photo_decorate description: 新年為頭像增加飾品 method: POST enableCORS: true param: - name: pic position: BODY required: 'FALSE' type: string desc: 原始圖片 - name: base position: BODY required: 'FALSE' type: string desc: 飾品 ID myWebsite: component: '@serverless/tencent-website' inputs: code: src: ./new_year_add_photo_decorate/web index: index.html error: index.html region: ap-beijing bucketName: new-year-add-photo-decorate
完成之后就可以實現頭像加裝飾的功能,效果如下:
直接加裝飾的方式其實是可以在前端實現的,但是既然用到了后端服務和云函數,那么我們不妨就將人工智能與 Serverless 架構結果來實現一個增加裝飾的小工具。
實現這一功能的主要做法就是通過人工智能算法 (此處是通過 Dlib 實現) 進行人臉檢測:
復制代碼
print("dlib 人臉關鍵點檢測器, 正臉檢測 ")predictorPath="shape_predictor_5_face_landmarks.dat"predictor=dlib.shape_predictor(predictorPath)detector=dlib.get_frontal_face_detector()dets=detector(img, 1)
此處的做法是只檢測一張臉,檢測到即進行返回:
復制代碼
for d in dets: x, y, w, h=d.left(), d.top(), d.right() - d.left(), d.bottom() - d.top() print(" 關鍵點檢測,5 個關鍵點 ") shape=predictor(img, d) print(" 選取左右眼眼角的點 ") point1=shape.part(0) point2=shape.part(2) print(" 求兩點中心 ") eyes_center=((point1.x + point2.x) // 2, (point1.y + point2.y) // 2) print(" 根據人臉大小調整帽子大小 ") factor=1.5 resizedHatH=int(round(rgbHat.shape[0] * w / rgbHat.shape[1] * factor)) resizedHatW=int(round(rgbHat.shape[1] * w / rgbHat.shape[1] * factor)) if resizedHatH > y: resizedHatH=y - 1 print(" 根據人臉大小調整帽子大小 ") resizedHat=cv2.resize(rgbHat, (resizedHatW, resizedHatH)) print(" 用 alpha 通道作為 mask") mask=cv2.resize(a, (resizedHatW, resizedHatH)) maskInv=cv2.bitwise_not(mask) print(" 帽子相對與人臉框上線的偏移量 ") dh=0 bgRoi=img[y + dh - resizedHatH:y + dh, (eyes_center[0] - resizedHatW // 3):(eyes_center[0] + resizedHatW // 3 * 2)] print(" 原圖 ROI 中提取放帽子的區域 ") bgRoi=bgRoi.astype(float) maskInv=cv2.merge((maskInv, maskInv, maskInv)) alpha=maskInv.astype(float) / 255 print(" 相乘之前保證兩者大小一致(可能會由于四舍五入原因不一致)") alpha=cv2.resize(alpha, (bgRoi.shape[1], bgRoi.shape[0])) bg=cv2.multiply(alpha, bgRoi) bg=bg.astype('uint8') print(" 提取帽子區域 ") hat=cv2.bitwise_and(resizedHat, cv2.bitwise_not(maskInv)) print(" 相加之前保證兩者大小一致(可能會由于四舍五入原因不一致)") hat=cv2.resize(hat, (bgRoi.shape[1], bgRoi.shape[0])) print(" 兩個 ROI 區域相加 ") addHat=cv2.add(bg, hat) print(" 把添加好帽子的區域放回原圖 ") img[y + dh - resizedHatH:y + dh, (eyes_center[0] - resizedHatW // 3):(eyes_center[0] + resizedHatW // 3 * 2)]=addHat return img
在 Serverless 架構下的完整代碼:
復制代碼
import cv2import dlibimport base64import json def addHat(img, hat_img): print(" 分離 rgba 通道,合成 rgb 三通道帽子圖,a 通道后面做 mask 用 ") r, g, b, a=cv2.split(hat_img) rgbHat=cv2.merge((r, g, b)) print("dlib 人臉關鍵點檢測器, 正臉檢測 ") predictorPath="shape_predictor_5_face_landmarks.dat" predictor=dlib.shape_predictor(predictorPath) detector=dlib.get_frontal_face_detector() dets=detector(img, 1) print(" 如果檢測到人臉 ") if len(dets) > 0: for d in dets: x, y, w, h=d.left(), d.top(), d.right() - d.left(), d.bottom() - d.top() print(" 關鍵點檢測,5 個關鍵點 ") shape=predictor(img, d) print(" 選取左右眼眼角的點 ") point1=shape.part(0) point2=shape.part(2) print(" 求兩點中心 ") eyes_center=((point1.x + point2.x) // 2, (point1.y + point2.y) // 2) print(" 根據人臉大小調整帽子大小 ") factor=1.5 resizedHatH=int(round(rgbHat.shape[0] * w / rgbHat.shape[1] * factor)) resizedHatW=int(round(rgbHat.shape[1] * w / rgbHat.shape[1] * factor)) if resizedHatH > y: resizedHatH=y - 1 print(" 根據人臉大小調整帽子大小 ") resizedHat=cv2.resize(rgbHat, (resizedHatW, resizedHatH)) print(" 用 alpha 通道作為 mask") mask=cv2.resize(a, (resizedHatW, resizedHatH)) maskInv=cv2.bitwise_not(mask) print(" 帽子相對與人臉框上線的偏移量 ") dh=0 bgRoi=img[y + dh - resizedHatH:y + dh, (eyes_center[0] - resizedHatW // 3):(eyes_center[0] + resizedHatW // 3 * 2)] print(" 原圖 ROI 中提取放帽子的區域 ") bgRoi=bgRoi.astype(float) maskInv=cv2.merge((maskInv, maskInv, maskInv)) alpha=maskInv.astype(float) / 255 print(" 相乘之前保證兩者大小一致(可能會由于四舍五入原因不一致)") alpha=cv2.resize(alpha, (bgRoi.shape[1], bgRoi.shape[0])) bg=cv2.multiply(alpha, bgRoi) bg=bg.astype('uint8') print(" 提取帽子區域 ") hat=cv2.bitwise_and(resizedHat, cv2.bitwise_not(maskInv)) print(" 相加之前保證兩者大小一致(可能會由于四舍五入原因不一致)") hat=cv2.resize(hat, (bgRoi.shape[1], bgRoi.shape[0])) print(" 兩個 ROI 區域相加 ") addHat=cv2.add(bg, hat) print(" 把添加好帽子的區域放回原圖 ") img[y + dh - resizedHatH:y + dh, (eyes_center[0] - resizedHatW // 3):(eyes_center[0] + resizedHatW // 3 * 2)]=addHat return img def main_handler(event, context): try: print(" 將接收到的 base64 圖像轉為 pic") imgData=base64.b64decode(json.loads(event["body"])["pic"]) with open('/tmp/picture.png', 'wb') as f: f.write(imgData) print(" 讀取帽子素材以及用戶頭像 ") hatImg=cv2.imread("hat.png", -1) userImg=cv2.imread("/tmp/picture.png") output=addHat(userImg, hatImg) cv2.imwrite("/tmp/output.jpg", output) print(" 讀取頭像進行返回給用戶,以 Base64 返回 ") with open("/tmp/output.jpg", "rb") as f: base64Data=str(base64.b64encode(f.read()), encoding='utf-8') return { "picture": base64Data } except Exception as e: return { "error": str(e) }
這樣,我們就完成了通過用戶上傳人物頭像進行增加圣誕帽的功能。
傳統情況下,如果我們要做一個增加頭像裝飾的小工具,可能需要一個服務器,哪怕沒有人使用,也必須有一臺服務器苦苦支撐,這樣導致有時僅僅是一個 Demo,也需要無時無刻的支出成本。但在 Serverless 架構下,其彈性伸縮特點讓我們不懼怕高并發,其按量付費模式讓我們不懼怕成本支出。
關注我并轉發此篇文章,私信我“領取資料”,即可免費獲得InfoQ價值4999元迷你書!
的。目前零基礎學UI設計,有兩種方法,一種是自學,另一種就是報班系統培訓學習,當然,想自學實現高薪就業的機會是渺小的。
而能夠快速實現高薪就業的高效學習方法,就是報名我們學院全新升級的線上UI零基礎就業班課程,享有專業老師授課系統培訓學習。
從零基礎到高級商業實戰案例項目訓練,全套課程由多位行業一線資深級UI設計師在線直播授課,課后全天一對一學習輔導和答疑,學完課程后享有全程輔導就業和推薦名企工作。
以上5個班課程內容全年不定期更新課時內容,凡是報名了課程的VIP學員,三年內都享有同步免費更新最新課時,行業設計趨勢與時俱進,一直都在不斷的創新改變,讓你每一年都可以學到行業最新的一些設計技能。
如果你是零基礎想轉行學想學好UI設計就業,那么就不要錯過我們此次升級的最新一期的UI設計全能就業班課程,讓你學有所成。
「全套UI設計全能就業班VIP課程怎么教學?」
授課方式:在線直播授課+直播回放+錄播+課后全天輔導的學習方式。
授課時間:周一到周六全天可學習課程,直播授課每天晚上8點-10點。
全天輔導:在直播課堂學習可與老師,同學互動交流,學習過程中遇到不懂的隨時可找老師解決,課后全天都有專業老師在線一對一學習輔導。
1.專業師資:8個老師 +兩個助教+專屬班主任
2.課程回放:提供回播視頻,三年內隨時可看
3.專屬課堂:在直播課堂上,不懂的可隨時問
4.獨立班群:建有獨立班群,課后全天有答疑
5.作業點評:課后作業布置,課前會點評作業
6.免費復訓:沒完全學會的,可繼續免費復學
7.就業推薦:全程輔導就業,學完后推薦工作
8.學習保障:簽訂學習協議,繳費后可開發票
UI設計全能就業班全套課程包含下圖11個班內容,培訓費用統一優惠價 3999元
(活動優惠價往下看↓)
有想要報班,從零基礎開始到高級系統培訓學習UI設計班的同學,請加老師微信:booklet1加我時請備注:報名UI就業班
想學不夠錢的同學,還可以使用信用卡、支付寶花唄、京東白條分期助學,分3期可享受免息,最長可分12期,每月僅需300多。
另外,報班的同學還能獲得以下額外福利 ↓↓↓↓
「六一節活動,凡是報名UI設計全能班的課程」
1、每天前10名報名可領取200元優惠券,即學費只要3799元
2、贈送一套價值2000元的游戲UI設計實戰案例課。
3、贈送一門價值1000元的高級UI設計案例特訓課。
4、贈送一份價值500元的UI設計素材模板珍藏禮包。
5、贈送一套UI設計學習專用軟件禮包一份。
01、我們的平臺怎么樣?
目前我們是國內最大的在線教育培訓機構之一,學院成立至今已有11年,也是國內最多UI設計學員選擇的在線學習平臺。
截止到現在,我們學院VIP學員已超過150萬+,學員們來自全球各地都有,百萬學員都選擇的學習平臺專業可靠。
02、教學質量有保障嗎?
每一位報名的學員都配備有專屬的班主任,學習過程全程督促,學習進度全程跟蹤,分班教學,每個班級都配備有多位授課老師,課后學習中遇到有任何問題,都可以隨時問老師解決。
03、師資力量怎么樣?
我們的UI設計授課教學老師一共有8位,全部都是高薪聘請的全職一線資深UI設計講師,老師在課堂授課時會把他們以前在企業工作中的商業設計項目和工作經驗帶到課堂傳授給學員。
04、培訓費用是多少?
我們的UI設計全能就業班,全套課程培訓優惠學費: 3999元 ,可以說是全國性價比最高的UI培訓班,讓你學到的技能一定對得起你所交的學費,家庭條件不好的學員還支持分期助學。
05、培訓時間是多久?
正常一期培訓4個月時間,只要你用心認真跟著課程內容去學習和按時交作業,4個月都能學會,如果4個月還沒有學會,可以免費繼續學下一期班,學會為止,而且中途不加收任何其他費用。
06、學完有工作推薦嗎?
有的,主要以互聯網公司就業為主,也可以自己去找,學會UI技能后,不用擔心沒工作,我們有專門的就業指導老師,簡歷制作,面試技巧,面試作品集設計,都會教你,讓你就業無憂。
07、學完就業薪資有多少?
學完課程后剛出去工作6000-13000元范圍,由于每個人學習力不同,所在城市不同,就業公司不同,學完月薪就在這個范圍,北上廣深一線城市薪資相對高一點,工作積累到有一定經驗后待遇也會提升到2以上。
08、能邊上學邊上班學嗎?
可以,課程可以隨時隨地全天在線學習,只要你有電腦就能學,不管你在哪個城市,還是在家里,在學校里面,都可以學習,不用辭職或住宿來學習。
09、課程教學內容有哪些?
我們的全套UI設計全能實戰就業班,課程體系包括7個班階段,軟件階段,GUI視覺設計,WUI網頁設計,Web前端,MUI移動端設計,UI交互設計,UI動效設計,UE用戶體驗設計等內容。
10、課程教學軟件有哪些?
課程教學軟件包括有:Photoshop(PS)、Illustrator(AI)、After Effects (AE)、Axure RP(ARP)、Dreamweaver(DW)、CINEMA 4D(C4D)XD、cutterman切圖插件,Mark man標注軟件等。
11、教學方式是怎樣的?
專業老師在課堂直播授課,學員邊聽課邊跟著老師的操作去實操,學習過程中,遇到有不理解的可以在課堂及時問老師,課后也還有一套完整超清的錄播課可以全天隨時學習。
12、沒空上課可以回看嗎?
可以,比如你今天突然有事,不能及時來上課,課后可以隨時看回播,每一節直播課我們都會全程錄制下來,所以不用擔心錯過任何一節課,回播課時可以快進,快退,暫停。
13、課后學習有輔導嗎?
報名以后,會邀請你加入UI設計VIP學員學習服務班級群,群里全天都配備有課后輔導老師在線一對一輔導和答疑,學習課程時遇到不懂的問題,可以隨時問老師解決。
14、課后會布置作業嗎?
有的,為了保證學習效果,報名的每一位學員都要交作業和學習筆記,剛開始學習基礎班時需要做筆記,因為設計基礎很重要,學完基礎班后,學習設計技能階段,此時課堂老師就會不定期布置作業,課后老師會統一檢查點評作業 。
15、可以手機學習課程嗎?
可以,通過下載我們的手機APP,平板APP,還有電腦直播教學課堂PC客戶端,手機還可以緩存下載課時到手機上,沒有網絡也可以學習觀看。
16、沒學會可以免費復學嗎?
報名后,課程享有三年有效期,課程三年內都可以隨時反復學習觀看,提供三年免費復學保障和終身售后解答學習服務,工作以后,在工作中遇到的難題,也還可以咨詢老師解答。
17、支持哪些方式繳費?
我們的官網課程付款和國內各大銀行都有合作,基本支持所有在線支付方式,銀行卡,信用卡,支付寶,微信,螞蟻花唄,京東白條等都可以。
18、學費可以分期付嗎?
可以,針對家庭條件不是很好的學員,可以申請分期助學,還可以使用支付寶花唄分期,京東白條分期,最長可以分12月,每個月僅需330多元。
19、繳費后有收據發票嗎?
有的。我們是國家批準的知名在線教育培訓機構,每一個學員報名后都有收據和可以開發票,發票有電子發票和紙質發票兩種,可自行選擇。
20、學習流程是怎樣的?
21、零基礎可以學習嗎?
可以,每個人學習UI設計都是要從零基礎學起的,沒有人天生就有UI設計基礎,所以不用擔心沒有任何基礎,而報班后也是從0基礎開始教起。
22、沒有美術基礎能學嗎?
可以,UI設計的美術基礎只適用于游戲UI設計,在我們的UI設計班課程里面也有教學美術基礎和手繪圖標,所以不用擔心沒有美術基礎。
23、學歷不高可以學習嗎?
可以,一般的UI設計工作大多數都是互聯網公司,卡能力嚴格一些,部分公司要求要大專以上學歷,如果學歷不高可以能力來奏,只要你的設計能力夠牛,有很多公司都會放寬要求。
24、學會后能進哪些公司?
學會以后,可以從事各大互聯網公司,比如百度,騰訊,阿里,華為,小米,京東,天貓,搜狐,新浪,網易,聯想,美團,滴滴,微信,支付寶,以及中小企業等。
25、課程適合那些人學習?
在校大學生,在職上班,無業人員,或想轉行UI設計的,比如:美工,白領,前臺,文員,客服,會計,司機,教師,醫生,工人,主播,快遞員,服務員,公務員,銷售員等都適合學習。
上課時間安排,在任何時間、地點,只要你想學習都可以隨時隨地學習,特別適合時間不固定的上班族,課程是采用:老師真人直播授課、視頻同步錄制回放、全天7*12小時老師在線解答的學習方式。
本套高級UI設計全能實戰就業班,是我們學院UI設計教學團隊老師們花了將近一年時間,收集了上百家名企的招聘工作崗位要求和商業項目設計案例,以及問卷調查后,精心研發的一套2019年行業最新UI設計師全能就業班課程。
點擊下面課程表可放大觀看↓↓
很高興你能看到這篇文章,這是我們全能UI設計師就業班的培訓課程,報班老師微信號:booklet1 添加老師請備注:報名UI設計課程。
UI設計全套課程直播授課共有140節,每節課教學時長2小時,包含7個班內容,由8位全職一線資深UI設計師授課。除了直播授課,還有500節錄播課400節直播回放課,合計超過1000節課時。
課程教學內容全新升級后,融入了UI設計行業所有最新設計技能,結合百度、騰訊、阿里、美團、京東、華為、網易、新浪、搜狐、蘋果公司等知名互聯網公司招聘要求,以名企就業為導向。
聘請從事5年以上的工作經驗老師授課,每一位老師講自己最擅長專業。
全套UI設計全能就業班,課程體系主要分為以下八大學習階段↓↓
一、UI設計美術階段
學習內容:素描關系、光照現象、光影繪制、透視、基礎造型、構圖原理、手繪圖標
完成作品:UI設計手繪圖標
二、UI設計軟件階段
學習內容:PS+AI+AE+ARP軟件從基礎到精通
完成作品:熟練PS+AI+AE+ARP軟件
三、UI設計案例階段
學習內容 : 布爾運算技法、扁平化圖標、擬物化圖標、系統圖標
完成作品:系統圖標、擬物化圖標、扁平化圖標
四、UI交互設計階段
學習內容:交互原型圖、交互邏輯理論、線框圖設計、頭腦風暴講解、ARP軟件運用
完成作品:低保真原型圖、高保真原型圖
五、UI視覺設計階段
學習內容:廣告banner、APP界面、版式布局、安卓規范、蘋果規范、色彩搭配、用戶體驗
完成作品:APP設計作品
六、UI動效設計階段
學習內容:AE軟件運用、UI圖標交互動效、UI界面交互動效
完成作品:APP交互動效作品
七、UI網頁設計階段
學習內容:Web界面設計規范、多風格多類型界面設計、網站宣傳品設計、電商專題、產品宣傳頁設計、網頁Banner廣告設計
完成作品:企業網站與個人網站作品
八、就業指導階段
學習內容:如何找工作、和面試官如何談話、作品集如何制作、簡歷如何制
完成作品:面試作品集+高逼格作品簡歷
「全套UI設計全能就業班VIP課程怎么教學?」
下圖是我們學院的UI設計老師和教學團隊,如果有同學是在廣州的或者在附近城市的,可隨時來參觀考察。
經過10多年在線教育培訓歷程,我們學院榮獲了多項設計行業教學大獎,得到了社會和廣大學員們的認可與厚愛
附上兩張官網UI設計社區VIP學員作業和學習筆記,報名的每一個學員都會很認真交作業和做筆記,課后老師統一點評作業。
報名后加入UI設計VIP班級群,群里全天都有課后輔導老師在線學習輔導和答疑,遇到不懂的問題,可以直接找到老師解決。下面是部分報名UI設計的VIP學員售后班級群,群里全天都有老師在線一對一學習輔導和答疑
近期報名UI設計VIP課程學員相冊:
另外,報名全能UI設計就業班的學員,額外再免費贈送一套價值2000元的游戲UI設計課程(共包含6個班,近600課時)↓↓
想加入新一新課程學習的同學,
直接加我的微信號 booklet1
也可以按住下面二維碼直接識別我的微信添加
如果資金有限的也可以申請分期報名,
支持花唄、白條、信用卡分期
分期的話最高可分一年。
每個月有360元即可學習。
加好友備注:報名UI課程。
我這邊會第一時間通過,然后辦理報名
輯導語: 組件庫是設計系統里的一個重要分支,一個合適的組件庫可以幫助設計師和開發者提高工作效率;本文作者分享了關于各個大廠已經成形的組件庫,一起來看一下。
最近為了給部門制定合理的設計規范,方便各個團隊更好的高效協作;為此參考了許多國內外優秀的設計規范,趁著這次機會做一個整理,而且這些設計規范基本上都是附帶 Sketch 源文件的。
但實際上組件庫的整理工作也是比較繁復的,我們在開始之前,需要去判斷什么情況下組件庫可以真正為我們節省工作量提升效率;而這些已經成形的組件庫,非常值得大家下載學習、參考和使用。
螞蟻金服出品,非常著名的框架;企業級產品的設計系統,很多公司的項目都在使用,而且提供了對設計師友好的Sketch規范文件,可以直接拿來用。
官方鏈接:https://ant.design/
源文件規范下載:https://ant.design/docs/resources
移動端: AntDesignMobile Template V1.0.sketch
首頁: Ant.Design.home-3.0.sketch
Pro: Ant.Design.Pro.sketch
web端: Ant.Design.3.0.Components.sketch
AntV是螞蟻金服全新一代數據可視化解決方案,致力于提供一套簡單方便、專業可靠、無限可能的數據可視化最佳實踐。(包含PC和移動端)
源文件規范下載:https://antv-2018.alipay.com/zh-cn/vis/resource/index.html
附件下載: AntV.Charts.sketch
這是由餓了么 UED 設計開發的基于 Vue 的前端組件庫,雖然在很多交互模式和組件樣式以及設計理念上都參考了 Ant Design,但是也做了一些自己的修改和調整。
他們同樣也推出了 Axure 元件庫文件以及 Sketch 組件庫,有興趣的朋友可以參考研究一下。
源文件規范下載:https://element.eleme.cn/#/zh-CN/resource
附件下載: Element UI Kit_v2.0.sketch
服務于 SaaS 產品的設計體系。連接設計和開發,讓協作變得高效簡單;通過沉淀不同行業、場景的經驗和思考,推動社交生態內的用戶體驗一致性。
源文件規范下載:https://design.youzan.com/resource/resource.html
桌面端視覺規范: Zan Desgin PC_2.0_beta.sketch
視覺規范: Zan Design Vant 視覺規范 V3.0 .sketch
元件庫: Zan Design Vant 元件庫 TC_ZY.zip
面向金融場景的Vue移動端UI組件庫,豐富、靈活、實用,快速搭建優質的金融類產品,讓復雜的金融場景變簡單。
源文件規范下載:https://didi.github.io/mand-mobile/#/en-US/design/other/resource
Taro UI,一套基于 Taro 框架開發的多端 UI 組件庫,可以在微信小程序 / H5 / ReactNative 等多端適配運行。京東用戶體驗設計部的凹凸實驗室出品。
源文件規范下載:https://taro-ui.aotu.io/#/docs/resource
附件下載: TaroUI.sketch
Axure部件庫: taroui-rplib1565263474229.zip
AT-UI 是一款基于 Vue.js 2.0 的前端 UI 組件庫,主要用于快速開發 PC 網站中后臺產品。
源文件規范下載:https://at-ui.github.io/at-ui/#/zh/resource/design
附件下載: feather.sketch
由微信團隊推出的可以用于微信小程序設計的 Sketch 組件庫,用起來也很方便,有微信端設計需求的朋友可以參考。
源文件規范下載:https://developers.weixin.qq.com/miniprogram/design/#%E5%9B%BE%E6%A0%87
QMUI,騰訊出品,分為Web、iOS、安卓三個端,都有相應的dome下載安裝;設計師可以下載安卓和iOS應用,經??纯蠢锩娴慕M件,熟悉后,和技術的協作會更有效率。
官方文檔:https://qmuiteam.com/web/page/widget.html
iOS 的設計規范其實并沒有 Material Design 那么具體和細節,但作為一個 iOS 平臺的設計人員還是需要把它們的設計理念爛熟于胸。
對于 iOS 平臺的 Sketch 組件庫,我只推薦兩個,一個是 Facebook 推出的 iOS 10 組件庫,另外一個是由 Apple 官方推出的組件庫,同樣都有 Sketch 源文件。
源文件規范下載:https://developer.apple.com/design/resources/
由 Google 設計團隊推出的 Material Design 一經發布就紅遍了全球設計界,多個富有突破性的設計理念,將理性與感性相結合的完美標準,使得越來越多的人基于 Material Design 制作了自己產品的設計規范。
除了谷歌官方的 Sketch 組件庫外,還有一個基于 Material Design 色板的 Sketch 源文件下載,用起來非常方便。
源文件規范下載:https://material.io/resources#sticker-sheets-icons-components
Material Design 官方相關源文件下載
Material Design 色板 Sketch 源文件下載
Teambition出品。Clarity Design 是一套全面的設計語言,從設計原則到字體排版,從交互到文案,從動效到樣式,從組件到設計工具…… 提供了各種解決方法和指導,設計師和工程師可以快速找到相關的指導內容,有效地幫助完善工作并且提高效率。
源文件規范下載:https://design.teambition.com/resource/design-resource
由國外 Shopify 團隊推出的 Polaris 設計規范也有比較不錯的參考價值,而且內容非常豐富完整,感興趣的朋友可以查看官方文檔好好研究一下,他們同樣提供 Sketch 組件庫。
源文件規范下載:https://polaris.shopify.com/resources/resources
由國外知名軟件企業 Atlassian 推出的設計語言,涵蓋了品牌、營銷、產品相關的設計規范和理念,其豐富程度僅次于 Material Design,可以說給了設計師很多參考與幫助,另外還提供了非常完整詳細的 Sketch 組件庫,強烈推薦大家研究學習!
源文件規范下載:https://atlassian.design/resources/sketch-library
Lightning Design System 是由 Salesforce 團隊推出的一個設計規范,它們的規范文檔也是相當完整而且可參考性很強,推薦大家研究,同時它們也有 Sketch 組件庫可供下載。
官方文檔:https://www.lightningdesignsystem.com/
源文件規范下載:https://github.com/salesforce-ux/design-system-ui-kit/blob/master/README.md
源文件規范下載:https://www.figma.com/community/ui_kits
https://www.figma.com/community/ui_kits
開源前端組件&交互Demo
官方文檔:http://vue.ydui.org/demo/#/
http://vue.ydui.org/demo/#/
一套基于 Vue.js 的高質量UI 組件庫。Vue.js 是一個JavaScriptMVVM庫,是一套構建用戶界面的漸進式框架;在網站中可以看到數量眾多的UI組件和對應代碼,本質上和我們制作UI規范是一樣的。
官方文檔:https://www.iviewui.com/
非官方,由 Sketch 團隊維護
源文件規范下載:https://www.sketch.com/downloads/mac/
規范文檔:https://mobile.ant.design/index-cn
Bootstrap是Twitter推出的一個用于前端開發的開源工具包,是一個CSS/HTML框架,目前世界上的很多網站開發都使用了這個。其中的柵格理論、響應式解決方案都變成了業界的參考規范。
官方文檔:https://v4.bootcss.com/
將設計規范做成 Sketch 組件庫甚至 Axure 元件庫其實任務量很大,但是這項工作做好了能夠大大提高產品、設計、開發團隊的協作效率!
但組件庫不是表面工作,畢竟,產品研發工作不是一蹴而就的,組件庫可以幫助研發團隊持續地維護產品。
在組件庫的研發工作中,我們需要思考:
本文由 @七分 翻譯發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。