Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
到大型節(jié)假日,我們常會發(fā)現(xiàn)社交平臺都會提供生成頭像裝飾的小工具,很是新奇好玩。如果從技術(shù)的維度看,這類平臺 / 工具一般都是通過下面兩個方法給我們生成頭像裝飾的:
增加頭像裝飾的功能其實很容易實現(xiàn),首先選擇一張圖片,上傳自己的頭像,然后函數(shù)部分進行圖像的合成,這一部分并沒有涉及到機器學(xué)習(xí)算法,僅僅是圖像合成相關(guān)算法。
通過用戶上傳的圖片,在指定位置增加預(yù)定圖片 / 用戶選擇的圖片作為裝飾物進行添加:
復(fù)制代碼
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) # 圓心橫坐標(biāo) for i in range(r2): for j in range(r2): lx=abs(i - r) # 到圓心距離的橫坐標(biāo) ly=abs(j - r) # 到圓心距離的縱坐標(biāo) l=(pow(lx, 2) + pow(ly, 2)) ** 0.5 # 三角函數(shù) 半徑 if l < r3: pimb[i - (r - r3), j - (r - r3)]=pima[i, j] return imb
復(fù)制代碼
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
復(fù)制代碼
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()
復(fù)制代碼
def return_msg(error, msg): return_data={ "uuid": str(uuid.uuid1()), "error": error, "message": msg } print(return_data) return return_data
復(fù)制代碼
import base64, jsonfrom PIL import Imageimport uuid def main_handler(event, context): try: print(" 將接收到的 base64 圖像轉(zhuǎn)為 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, " 數(shù)據(jù)處理異常: %s" % str(e))
完成后端圖像合成功能,制作前端頁面:
復(fù)制代碼
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>2020 頭像大變樣 - 頭像 SHOW - 自豪的采用騰訊云 Serverless 架構(gòu)!</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=" 系統(tǒng)處理中,請稍后..." var oFReader=new FileReader(); oFReader.readAsDataURL(thisPic); oFReader.onload=function (oFREvent) { var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執(zhí)行代碼 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 瀏覽器執(zhí)行代碼 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> <!-- 標(biāo)準(zhǔn) 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>
完成之后:
復(fù)制代碼
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
完成之后就可以實現(xiàn)頭像加裝飾的功能,效果如下:
直接加裝飾的方式其實是可以在前端實現(xiàn)的,但是既然用到了后端服務(wù)和云函數(shù),那么我們不妨就將人工智能與 Serverless 架構(gòu)結(jié)果來實現(xiàn)一個增加裝飾的小工具。
實現(xiàn)這一功能的主要做法就是通過人工智能算法 (此處是通過 Dlib 實現(xiàn)) 進行人臉檢測:
復(fù)制代碼
print("dlib 人臉關(guān)鍵點檢測器, 正臉檢測 ")predictorPath="shape_predictor_5_face_landmarks.dat"predictor=dlib.shape_predictor(predictorPath)detector=dlib.get_frontal_face_detector()dets=detector(img, 1)
此處的做法是只檢測一張臉,檢測到即進行返回:
復(fù)制代碼
for d in dets: x, y, w, h=d.left(), d.top(), d.right() - d.left(), d.bottom() - d.top() print(" 關(guān)鍵點檢測,5 個關(guān)鍵點 ") 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(" 根據(jù)人臉大小調(diào)整帽子大小 ") 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(" 根據(jù)人臉大小調(diào)整帽子大小 ") 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 中提取放帽子的區(qū)域 ") 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(" 提取帽子區(qū)域 ") hat=cv2.bitwise_and(resizedHat, cv2.bitwise_not(maskInv)) print(" 相加之前保證兩者大小一致(可能會由于四舍五入原因不一致)") hat=cv2.resize(hat, (bgRoi.shape[1], bgRoi.shape[0])) print(" 兩個 ROI 區(qū)域相加 ") addHat=cv2.add(bg, hat) print(" 把添加好帽子的區(qū)域放回原圖 ") img[y + dh - resizedHatH:y + dh, (eyes_center[0] - resizedHatW // 3):(eyes_center[0] + resizedHatW // 3 * 2)]=addHat return img
在 Serverless 架構(gòu)下的完整代碼:
復(fù)制代碼
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 人臉關(guān)鍵點檢測器, 正臉檢測 ") 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(" 關(guān)鍵點檢測,5 個關(guān)鍵點 ") 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(" 根據(jù)人臉大小調(diào)整帽子大小 ") 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(" 根據(jù)人臉大小調(diào)整帽子大小 ") 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 中提取放帽子的區(qū)域 ") 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(" 提取帽子區(qū)域 ") hat=cv2.bitwise_and(resizedHat, cv2.bitwise_not(maskInv)) print(" 相加之前保證兩者大小一致(可能會由于四舍五入原因不一致)") hat=cv2.resize(hat, (bgRoi.shape[1], bgRoi.shape[0])) print(" 兩個 ROI 區(qū)域相加 ") addHat=cv2.add(bg, hat) print(" 把添加好帽子的區(qū)域放回原圖 ") 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 圖像轉(zhuǎn)為 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) }
這樣,我們就完成了通過用戶上傳人物頭像進行增加圣誕帽的功能。
傳統(tǒng)情況下,如果我們要做一個增加頭像裝飾的小工具,可能需要一個服務(wù)器,哪怕沒有人使用,也必須有一臺服務(wù)器苦苦支撐,這樣導(dǎo)致有時僅僅是一個 Demo,也需要無時無刻的支出成本。但在 Serverless 架構(gòu)下,其彈性伸縮特點讓我們不懼怕高并發(fā),其按量付費模式讓我們不懼怕成本支出。
關(guān)注我并轉(zhuǎn)發(fā)此篇文章,私信我“領(lǐng)取資料”,即可免費獲得InfoQ價值4999元迷你書!
的。目前零基礎(chǔ)學(xué)UI設(shè)計,有兩種方法,一種是自學(xué),另一種就是報班系統(tǒng)培訓(xùn)學(xué)習(xí),當(dāng)然,想自學(xué)實現(xiàn)高薪就業(yè)的機會是渺小的。
而能夠快速實現(xiàn)高薪就業(yè)的高效學(xué)習(xí)方法,就是報名我們學(xué)院全新升級的線上UI零基礎(chǔ)就業(yè)班課程,享有專業(yè)老師授課系統(tǒng)培訓(xùn)學(xué)習(xí)。
從零基礎(chǔ)到高級商業(yè)實戰(zhàn)案例項目訓(xùn)練,全套課程由多位行業(yè)一線資深級UI設(shè)計師在線直播授課,課后全天一對一學(xué)習(xí)輔導(dǎo)和答疑,學(xué)完課程后享有全程輔導(dǎo)就業(yè)和推薦名企工作。
以上5個班課程內(nèi)容全年不定期更新課時內(nèi)容,凡是報名了課程的VIP學(xué)員,三年內(nèi)都享有同步免費更新最新課時,行業(yè)設(shè)計趨勢與時俱進,一直都在不斷的創(chuàng)新改變,讓你每一年都可以學(xué)到行業(yè)最新的一些設(shè)計技能。
如果你是零基礎(chǔ)想轉(zhuǎn)行學(xué)想學(xué)好UI設(shè)計就業(yè),那么就不要錯過我們此次升級的最新一期的UI設(shè)計全能就業(yè)班課程,讓你學(xué)有所成。
「全套UI設(shè)計全能就業(yè)班VIP課程怎么教學(xué)?」
授課方式:在線直播授課+直播回放+錄播+課后全天輔導(dǎo)的學(xué)習(xí)方式。
授課時間:周一到周六全天可學(xué)習(xí)課程,直播授課每天晚上8點-10點。
全天輔導(dǎo):在直播課堂學(xué)習(xí)可與老師,同學(xué)互動交流,學(xué)習(xí)過程中遇到不懂的隨時可找老師解決,課后全天都有專業(yè)老師在線一對一學(xué)習(xí)輔導(dǎo)。
1.專業(yè)師資:8個老師 +兩個助教+專屬班主任
2.課程回放:提供回播視頻,三年內(nèi)隨時可看
3.專屬課堂:在直播課堂上,不懂的可隨時問
4.獨立班群:建有獨立班群,課后全天有答疑
5.作業(yè)點評:課后作業(yè)布置,課前會點評作業(yè)
6.免費復(fù)訓(xùn):沒完全學(xué)會的,可繼續(xù)免費復(fù)學(xué)
7.就業(yè)推薦:全程輔導(dǎo)就業(yè),學(xué)完后推薦工作
8.學(xué)習(xí)保障:簽訂學(xué)習(xí)協(xié)議,繳費后可開發(fā)票
UI設(shè)計全能就業(yè)班全套課程包含下圖11個班內(nèi)容,培訓(xùn)費用統(tǒng)一優(yōu)惠價 3999元
(活動優(yōu)惠價往下看↓)
有想要報班,從零基礎(chǔ)開始到高級系統(tǒng)培訓(xùn)學(xué)習(xí)UI設(shè)計班的同學(xué),請加老師微信:booklet1加我時請備注:報名UI就業(yè)班
想學(xué)不夠錢的同學(xué),還可以使用信用卡、支付寶花唄、京東白條分期助學(xué),分3期可享受免息,最長可分12期,每月僅需300多。
另外,報班的同學(xué)還能獲得以下額外福利 ↓↓↓↓
「六一節(jié)活動,凡是報名UI設(shè)計全能班的課程」
1、每天前10名報名可領(lǐng)取200元優(yōu)惠券,即學(xué)費只要3799元
2、贈送一套價值2000元的游戲UI設(shè)計實戰(zhàn)案例課。
3、贈送一門價值1000元的高級UI設(shè)計案例特訓(xùn)課。
4、贈送一份價值500元的UI設(shè)計素材模板珍藏禮包。
5、贈送一套UI設(shè)計學(xué)習(xí)專用軟件禮包一份。
01、我們的平臺怎么樣?
目前我們是國內(nèi)最大的在線教育培訓(xùn)機構(gòu)之一,學(xué)院成立至今已有11年,也是國內(nèi)最多UI設(shè)計學(xué)員選擇的在線學(xué)習(xí)平臺。
截止到現(xiàn)在,我們學(xué)院VIP學(xué)員已超過150萬+,學(xué)員們來自全球各地都有,百萬學(xué)員都選擇的學(xué)習(xí)平臺專業(yè)可靠。
02、教學(xué)質(zhì)量有保障嗎?
每一位報名的學(xué)員都配備有專屬的班主任,學(xué)習(xí)過程全程督促,學(xué)習(xí)進度全程跟蹤,分班教學(xué),每個班級都配備有多位授課老師,課后學(xué)習(xí)中遇到有任何問題,都可以隨時問老師解決。
03、師資力量怎么樣?
我們的UI設(shè)計授課教學(xué)老師一共有8位,全部都是高薪聘請的全職一線資深UI設(shè)計講師,老師在課堂授課時會把他們以前在企業(yè)工作中的商業(yè)設(shè)計項目和工作經(jīng)驗帶到課堂傳授給學(xué)員。
04、培訓(xùn)費用是多少?
我們的UI設(shè)計全能就業(yè)班,全套課程培訓(xùn)優(yōu)惠學(xué)費: 3999元 ,可以說是全國性價比最高的UI培訓(xùn)班,讓你學(xué)到的技能一定對得起你所交的學(xué)費,家庭條件不好的學(xué)員還支持分期助學(xué)。
05、培訓(xùn)時間是多久?
正常一期培訓(xùn)4個月時間,只要你用心認真跟著課程內(nèi)容去學(xué)習(xí)和按時交作業(yè),4個月都能學(xué)會,如果4個月還沒有學(xué)會,可以免費繼續(xù)學(xué)下一期班,學(xué)會為止,而且中途不加收任何其他費用。
06、學(xué)完有工作推薦嗎?
有的,主要以互聯(lián)網(wǎng)公司就業(yè)為主,也可以自己去找,學(xué)會UI技能后,不用擔(dān)心沒工作,我們有專門的就業(yè)指導(dǎo)老師,簡歷制作,面試技巧,面試作品集設(shè)計,都會教你,讓你就業(yè)無憂。
07、學(xué)完就業(yè)薪資有多少?
學(xué)完課程后剛出去工作6000-13000元范圍,由于每個人學(xué)習(xí)力不同,所在城市不同,就業(yè)公司不同,學(xué)完月薪就在這個范圍,北上廣深一線城市薪資相對高一點,工作積累到有一定經(jīng)驗后待遇也會提升到2以上。
08、能邊上學(xué)邊上班學(xué)嗎?
可以,課程可以隨時隨地全天在線學(xué)習(xí),只要你有電腦就能學(xué),不管你在哪個城市,還是在家里,在學(xué)校里面,都可以學(xué)習(xí),不用辭職或住宿來學(xué)習(xí)。
09、課程教學(xué)內(nèi)容有哪些?
我們的全套UI設(shè)計全能實戰(zhàn)就業(yè)班,課程體系包括7個班階段,軟件階段,GUI視覺設(shè)計,WUI網(wǎng)頁設(shè)計,Web前端,MUI移動端設(shè)計,UI交互設(shè)計,UI動效設(shè)計,UE用戶體驗設(shè)計等內(nèi)容。
10、課程教學(xué)軟件有哪些?
課程教學(xué)軟件包括有:Photoshop(PS)、Illustrator(AI)、After Effects (AE)、Axure RP(ARP)、Dreamweaver(DW)、CINEMA 4D(C4D)XD、cutterman切圖插件,Mark man標(biāo)注軟件等。
11、教學(xué)方式是怎樣的?
專業(yè)老師在課堂直播授課,學(xué)員邊聽課邊跟著老師的操作去實操,學(xué)習(xí)過程中,遇到有不理解的可以在課堂及時問老師,課后也還有一套完整超清的錄播課可以全天隨時學(xué)習(xí)。
12、沒空上課可以回看嗎?
可以,比如你今天突然有事,不能及時來上課,課后可以隨時看回播,每一節(jié)直播課我們都會全程錄制下來,所以不用擔(dān)心錯過任何一節(jié)課,回播課時可以快進,快退,暫停。
13、課后學(xué)習(xí)有輔導(dǎo)嗎?
報名以后,會邀請你加入UI設(shè)計VIP學(xué)員學(xué)習(xí)服務(wù)班級群,群里全天都配備有課后輔導(dǎo)老師在線一對一輔導(dǎo)和答疑,學(xué)習(xí)課程時遇到不懂的問題,可以隨時問老師解決。
14、課后會布置作業(yè)嗎?
有的,為了保證學(xué)習(xí)效果,報名的每一位學(xué)員都要交作業(yè)和學(xué)習(xí)筆記,剛開始學(xué)習(xí)基礎(chǔ)班時需要做筆記,因為設(shè)計基礎(chǔ)很重要,學(xué)完基礎(chǔ)班后,學(xué)習(xí)設(shè)計技能階段,此時課堂老師就會不定期布置作業(yè),課后老師會統(tǒng)一檢查點評作業(yè) 。
15、可以手機學(xué)習(xí)課程嗎?
可以,通過下載我們的手機APP,平板APP,還有電腦直播教學(xué)課堂PC客戶端,手機還可以緩存下載課時到手機上,沒有網(wǎng)絡(luò)也可以學(xué)習(xí)觀看。
16、沒學(xué)會可以免費復(fù)學(xué)嗎?
報名后,課程享有三年有效期,課程三年內(nèi)都可以隨時反復(fù)學(xué)習(xí)觀看,提供三年免費復(fù)學(xué)保障和終身售后解答學(xué)習(xí)服務(wù),工作以后,在工作中遇到的難題,也還可以咨詢老師解答。
17、支持哪些方式繳費?
我們的官網(wǎng)課程付款和國內(nèi)各大銀行都有合作,基本支持所有在線支付方式,銀行卡,信用卡,支付寶,微信,螞蟻花唄,京東白條等都可以。
18、學(xué)費可以分期付嗎?
可以,針對家庭條件不是很好的學(xué)員,可以申請分期助學(xué),還可以使用支付寶花唄分期,京東白條分期,最長可以分12月,每個月僅需330多元。
19、繳費后有收據(jù)發(fā)票嗎?
有的。我們是國家批準(zhǔn)的知名在線教育培訓(xùn)機構(gòu),每一個學(xué)員報名后都有收據(jù)和可以開發(fā)票,發(fā)票有電子發(fā)票和紙質(zhì)發(fā)票兩種,可自行選擇。
20、學(xué)習(xí)流程是怎樣的?
21、零基礎(chǔ)可以學(xué)習(xí)嗎?
可以,每個人學(xué)習(xí)UI設(shè)計都是要從零基礎(chǔ)學(xué)起的,沒有人天生就有UI設(shè)計基礎(chǔ),所以不用擔(dān)心沒有任何基礎(chǔ),而報班后也是從0基礎(chǔ)開始教起。
22、沒有美術(shù)基礎(chǔ)能學(xué)嗎?
可以,UI設(shè)計的美術(shù)基礎(chǔ)只適用于游戲UI設(shè)計,在我們的UI設(shè)計班課程里面也有教學(xué)美術(shù)基礎(chǔ)和手繪圖標(biāo),所以不用擔(dān)心沒有美術(shù)基礎(chǔ)。
23、學(xué)歷不高可以學(xué)習(xí)嗎?
可以,一般的UI設(shè)計工作大多數(shù)都是互聯(lián)網(wǎng)公司,卡能力嚴(yán)格一些,部分公司要求要大專以上學(xué)歷,如果學(xué)歷不高可以能力來奏,只要你的設(shè)計能力夠牛,有很多公司都會放寬要求。
24、學(xué)會后能進哪些公司?
學(xué)會以后,可以從事各大互聯(lián)網(wǎng)公司,比如百度,騰訊,阿里,華為,小米,京東,天貓,搜狐,新浪,網(wǎng)易,聯(lián)想,美團,滴滴,微信,支付寶,以及中小企業(yè)等。
25、課程適合那些人學(xué)習(xí)?
在校大學(xué)生,在職上班,無業(yè)人員,或想轉(zhuǎn)行UI設(shè)計的,比如:美工,白領(lǐng),前臺,文員,客服,會計,司機,教師,醫(yī)生,工人,主播,快遞員,服務(wù)員,公務(wù)員,銷售員等都適合學(xué)習(xí)。
上課時間安排,在任何時間、地點,只要你想學(xué)習(xí)都可以隨時隨地學(xué)習(xí),特別適合時間不固定的上班族,課程是采用:老師真人直播授課、視頻同步錄制回放、全天7*12小時老師在線解答的學(xué)習(xí)方式。
本套高級UI設(shè)計全能實戰(zhàn)就業(yè)班,是我們學(xué)院UI設(shè)計教學(xué)團隊老師們花了將近一年時間,收集了上百家名企的招聘工作崗位要求和商業(yè)項目設(shè)計案例,以及問卷調(diào)查后,精心研發(fā)的一套2019年行業(yè)最新UI設(shè)計師全能就業(yè)班課程。
點擊下面課程表可放大觀看↓↓
很高興你能看到這篇文章,這是我們?nèi)躑I設(shè)計師就業(yè)班的培訓(xùn)課程,報班老師微信號:booklet1 添加老師請備注:報名UI設(shè)計課程。
UI設(shè)計全套課程直播授課共有140節(jié),每節(jié)課教學(xué)時長2小時,包含7個班內(nèi)容,由8位全職一線資深UI設(shè)計師授課。除了直播授課,還有500節(jié)錄播課400節(jié)直播回放課,合計超過1000節(jié)課時。
課程教學(xué)內(nèi)容全新升級后,融入了UI設(shè)計行業(yè)所有最新設(shè)計技能,結(jié)合百度、騰訊、阿里、美團、京東、華為、網(wǎng)易、新浪、搜狐、蘋果公司等知名互聯(lián)網(wǎng)公司招聘要求,以名企就業(yè)為導(dǎo)向。
聘請從事5年以上的工作經(jīng)驗老師授課,每一位老師講自己最擅長專業(yè)。
全套UI設(shè)計全能就業(yè)班,課程體系主要分為以下八大學(xué)習(xí)階段↓↓
一、UI設(shè)計美術(shù)階段
學(xué)習(xí)內(nèi)容:素描關(guān)系、光照現(xiàn)象、光影繪制、透視、基礎(chǔ)造型、構(gòu)圖原理、手繪圖標(biāo)
完成作品:UI設(shè)計手繪圖標(biāo)
二、UI設(shè)計軟件階段
學(xué)習(xí)內(nèi)容:PS+AI+AE+ARP軟件從基礎(chǔ)到精通
完成作品:熟練PS+AI+AE+ARP軟件
三、UI設(shè)計案例階段
學(xué)習(xí)內(nèi)容 : 布爾運算技法、扁平化圖標(biāo)、擬物化圖標(biāo)、系統(tǒng)圖標(biāo)
完成作品:系統(tǒng)圖標(biāo)、擬物化圖標(biāo)、扁平化圖標(biāo)
四、UI交互設(shè)計階段
學(xué)習(xí)內(nèi)容:交互原型圖、交互邏輯理論、線框圖設(shè)計、頭腦風(fēng)暴講解、ARP軟件運用
完成作品:低保真原型圖、高保真原型圖
五、UI視覺設(shè)計階段
學(xué)習(xí)內(nèi)容:廣告banner、APP界面、版式布局、安卓規(guī)范、蘋果規(guī)范、色彩搭配、用戶體驗
完成作品:APP設(shè)計作品
六、UI動效設(shè)計階段
學(xué)習(xí)內(nèi)容:AE軟件運用、UI圖標(biāo)交互動效、UI界面交互動效
完成作品:APP交互動效作品
七、UI網(wǎng)頁設(shè)計階段
學(xué)習(xí)內(nèi)容:Web界面設(shè)計規(guī)范、多風(fēng)格多類型界面設(shè)計、網(wǎng)站宣傳品設(shè)計、電商專題、產(chǎn)品宣傳頁設(shè)計、網(wǎng)頁Banner廣告設(shè)計
完成作品:企業(yè)網(wǎng)站與個人網(wǎng)站作品
八、就業(yè)指導(dǎo)階段
學(xué)習(xí)內(nèi)容:如何找工作、和面試官如何談話、作品集如何制作、簡歷如何制
完成作品:面試作品集+高逼格作品簡歷
「全套UI設(shè)計全能就業(yè)班VIP課程怎么教學(xué)?」
下圖是我們學(xué)院的UI設(shè)計老師和教學(xué)團隊,如果有同學(xué)是在廣州的或者在附近城市的,可隨時來參觀考察。
經(jīng)過10多年在線教育培訓(xùn)歷程,我們學(xué)院榮獲了多項設(shè)計行業(yè)教學(xué)大獎,得到了社會和廣大學(xué)員們的認可與厚愛
附上兩張官網(wǎng)UI設(shè)計社區(qū)VIP學(xué)員作業(yè)和學(xué)習(xí)筆記,報名的每一個學(xué)員都會很認真交作業(yè)和做筆記,課后老師統(tǒng)一點評作業(yè)。
報名后加入UI設(shè)計VIP班級群,群里全天都有課后輔導(dǎo)老師在線學(xué)習(xí)輔導(dǎo)和答疑,遇到不懂的問題,可以直接找到老師解決。下面是部分報名UI設(shè)計的VIP學(xué)員售后班級群,群里全天都有老師在線一對一學(xué)習(xí)輔導(dǎo)和答疑
近期報名UI設(shè)計VIP課程學(xué)員相冊:
另外,報名全能UI設(shè)計就業(yè)班的學(xué)員,額外再免費贈送一套價值2000元的游戲UI設(shè)計課程(共包含6個班,近600課時)↓↓
想加入新一新課程學(xué)習(xí)的同學(xué),
直接加我的微信號 booklet1
也可以按住下面二維碼直接識別我的微信添加
如果資金有限的也可以申請分期報名,
支持花唄、白條、信用卡分期
分期的話最高可分一年。
每個月有360元即可學(xué)習(xí)。
加好友備注:報名UI課程。
我這邊會第一時間通過,然后辦理報名
輯導(dǎo)語: 組件庫是設(shè)計系統(tǒng)里的一個重要分支,一個合適的組件庫可以幫助設(shè)計師和開發(fā)者提高工作效率;本文作者分享了關(guān)于各個大廠已經(jīng)成形的組件庫,一起來看一下。
最近為了給部門制定合理的設(shè)計規(guī)范,方便各個團隊更好的高效協(xié)作;為此參考了許多國內(nèi)外優(yōu)秀的設(shè)計規(guī)范,趁著這次機會做一個整理,而且這些設(shè)計規(guī)范基本上都是附帶 Sketch 源文件的。
但實際上組件庫的整理工作也是比較繁復(fù)的,我們在開始之前,需要去判斷什么情況下組件庫可以真正為我們節(jié)省工作量提升效率;而這些已經(jīng)成形的組件庫,非常值得大家下載學(xué)習(xí)、參考和使用。
螞蟻金服出品,非常著名的框架;企業(yè)級產(chǎn)品的設(shè)計系統(tǒng),很多公司的項目都在使用,而且提供了對設(shè)計師友好的Sketch規(guī)范文件,可以直接拿來用。
官方鏈接:https://ant.design/
源文件規(guī)范下載: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是螞蟻金服全新一代數(shù)據(jù)可視化解決方案,致力于提供一套簡單方便、專業(yè)可靠、無限可能的數(shù)據(jù)可視化最佳實踐。(包含PC和移動端)
源文件規(guī)范下載:https://antv-2018.alipay.com/zh-cn/vis/resource/index.html
附件下載: AntV.Charts.sketch
這是由餓了么 UED 設(shè)計開發(fā)的基于 Vue 的前端組件庫,雖然在很多交互模式和組件樣式以及設(shè)計理念上都參考了 Ant Design,但是也做了一些自己的修改和調(diào)整。
他們同樣也推出了 Axure 元件庫文件以及 Sketch 組件庫,有興趣的朋友可以參考研究一下。
源文件規(guī)范下載:https://element.eleme.cn/#/zh-CN/resource
附件下載: Element UI Kit_v2.0.sketch
服務(wù)于 SaaS 產(chǎn)品的設(shè)計體系。連接設(shè)計和開發(fā),讓協(xié)作變得高效簡單;通過沉淀不同行業(yè)、場景的經(jīng)驗和思考,推動社交生態(tài)內(nèi)的用戶體驗一致性。
源文件規(guī)范下載:https://design.youzan.com/resource/resource.html
桌面端視覺規(guī)范: Zan Desgin PC_2.0_beta.sketch
視覺規(guī)范: Zan Design Vant 視覺規(guī)范 V3.0 .sketch
元件庫: Zan Design Vant 元件庫 TC_ZY.zip
面向金融場景的Vue移動端UI組件庫,豐富、靈活、實用,快速搭建優(yōu)質(zhì)的金融類產(chǎn)品,讓復(fù)雜的金融場景變簡單。
源文件規(guī)范下載:https://didi.github.io/mand-mobile/#/en-US/design/other/resource
Taro UI,一套基于 Taro 框架開發(fā)的多端 UI 組件庫,可以在微信小程序 / H5 / ReactNative 等多端適配運行。京東用戶體驗設(shè)計部的凹凸實驗室出品。
源文件規(guī)范下載:https://taro-ui.aotu.io/#/docs/resource
附件下載: TaroUI.sketch
Axure部件庫: taroui-rplib1565263474229.zip
AT-UI 是一款基于 Vue.js 2.0 的前端 UI 組件庫,主要用于快速開發(fā) PC 網(wǎng)站中后臺產(chǎn)品。
源文件規(guī)范下載:https://at-ui.github.io/at-ui/#/zh/resource/design
附件下載: feather.sketch
由微信團隊推出的可以用于微信小程序設(shè)計的 Sketch 組件庫,用起來也很方便,有微信端設(shè)計需求的朋友可以參考。
源文件規(guī)范下載:https://developers.weixin.qq.com/miniprogram/design/#%E5%9B%BE%E6%A0%87
QMUI,騰訊出品,分為Web、iOS、安卓三個端,都有相應(yīng)的dome下載安裝;設(shè)計師可以下載安卓和iOS應(yīng)用,經(jīng)常看看里面的組件,熟悉后,和技術(shù)的協(xié)作會更有效率。
官方文檔:https://qmuiteam.com/web/page/widget.html
iOS 的設(shè)計規(guī)范其實并沒有 Material Design 那么具體和細節(jié),但作為一個 iOS 平臺的設(shè)計人員還是需要把它們的設(shè)計理念爛熟于胸。
對于 iOS 平臺的 Sketch 組件庫,我只推薦兩個,一個是 Facebook 推出的 iOS 10 組件庫,另外一個是由 Apple 官方推出的組件庫,同樣都有 Sketch 源文件。
源文件規(guī)范下載:https://developer.apple.com/design/resources/
由 Google 設(shè)計團隊推出的 Material Design 一經(jīng)發(fā)布就紅遍了全球設(shè)計界,多個富有突破性的設(shè)計理念,將理性與感性相結(jié)合的完美標(biāo)準(zhǔn),使得越來越多的人基于 Material Design 制作了自己產(chǎn)品的設(shè)計規(guī)范。
除了谷歌官方的 Sketch 組件庫外,還有一個基于 Material Design 色板的 Sketch 源文件下載,用起來非常方便。
源文件規(guī)范下載:https://material.io/resources#sticker-sheets-icons-components
Material Design 官方相關(guān)源文件下載
Material Design 色板 Sketch 源文件下載
Teambition出品。Clarity Design 是一套全面的設(shè)計語言,從設(shè)計原則到字體排版,從交互到文案,從動效到樣式,從組件到設(shè)計工具…… 提供了各種解決方法和指導(dǎo),設(shè)計師和工程師可以快速找到相關(guān)的指導(dǎo)內(nèi)容,有效地幫助完善工作并且提高效率。
源文件規(guī)范下載:https://design.teambition.com/resource/design-resource
由國外 Shopify 團隊推出的 Polaris 設(shè)計規(guī)范也有比較不錯的參考價值,而且內(nèi)容非常豐富完整,感興趣的朋友可以查看官方文檔好好研究一下,他們同樣提供 Sketch 組件庫。
源文件規(guī)范下載:https://polaris.shopify.com/resources/resources
由國外知名軟件企業(yè) Atlassian 推出的設(shè)計語言,涵蓋了品牌、營銷、產(chǎn)品相關(guān)的設(shè)計規(guī)范和理念,其豐富程度僅次于 Material Design,可以說給了設(shè)計師很多參考與幫助,另外還提供了非常完整詳細的 Sketch 組件庫,強烈推薦大家研究學(xué)習(xí)!
源文件規(guī)范下載:https://atlassian.design/resources/sketch-library
Lightning Design System 是由 Salesforce 團隊推出的一個設(shè)計規(guī)范,它們的規(guī)范文檔也是相當(dāng)完整而且可參考性很強,推薦大家研究,同時它們也有 Sketch 組件庫可供下載。
官方文檔:https://www.lightningdesignsystem.com/
源文件規(guī)范下載:https://github.com/salesforce-ux/design-system-ui-kit/blob/master/README.md
源文件規(guī)范下載: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 的高質(zhì)量UI 組件庫。Vue.js 是一個JavaScriptMVVM庫,是一套構(gòu)建用戶界面的漸進式框架;在網(wǎng)站中可以看到數(shù)量眾多的UI組件和對應(yīng)代碼,本質(zhì)上和我們制作UI規(guī)范是一樣的。
官方文檔:https://www.iviewui.com/
非官方,由 Sketch 團隊維護
源文件規(guī)范下載:https://www.sketch.com/downloads/mac/
規(guī)范文檔:https://mobile.ant.design/index-cn
Bootstrap是Twitter推出的一個用于前端開發(fā)的開源工具包,是一個CSS/HTML框架,目前世界上的很多網(wǎng)站開發(fā)都使用了這個。其中的柵格理論、響應(yīng)式解決方案都變成了業(yè)界的參考規(guī)范。
官方文檔:https://v4.bootcss.com/
將設(shè)計規(guī)范做成 Sketch 組件庫甚至 Axure 元件庫其實任務(wù)量很大,但是這項工作做好了能夠大大提高產(chǎn)品、設(shè)計、開發(fā)團隊的協(xié)作效率!
但組件庫不是表面工作,畢竟,產(chǎn)品研發(fā)工作不是一蹴而就的,組件庫可以幫助研發(fā)團隊持續(xù)地維護產(chǎn)品。
在組件庫的研發(fā)工作中,我們需要思考:
本文由 @七分 翻譯發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。