創作內容

12 GP

【Unity 學習筆記】webCam拍照、照片壓縮、上傳/下載自php資料庫

作者:趴趴鼠Loading│2019-12-06 00:49:40│贊助:24│人氣:117
(一個害我壓力山大的專案)
前言:
學校校慶過了,展也展完了~
想說這一路風風雨雨才成功殺青的專案也讓我學到不少。((還有工讀費$$))

取之於社群,還之於社群。
如果沒有每天爬到2點也爬不完的文獻,就不可能有做完的一天,而我這個專案對新手來說也算是一個大統整吧,希望能多少回饋給社群。

再來個聲明:
這篇不是教學,只是我的筆記。 歡迎分享各位的經驗、知識
這篇不是教學,只是我的筆記。 歡迎分享各位的經驗、知識
這篇不是教學,只是我的筆記。 歡迎分享各位的經驗、知識


先簡介一下用法:
使用者可以下載App選擇拍照或留言並完成編輯。之後可以在特定的展示端上看到自己的人物或留言出現。
之前做的海報,遮掉一些感覺會被看出來的LOGO。 (不知道為什麼就是覺得遮起來很心安)
((模組都不是我建的,我這次只負責Unity和資料庫。不得不說建模的學姊很厲害))

正題:


0.變數:
Unity 有個Raw Image的UI物件,我們把相機看到的畫面呈現在上面,之後將拍照的畫面套用在"FaceApplyMat"這個材質球上,再順便修改offset值。
再幫Raw Image加上Aspect Ratio Fitter,等等會說到。

1.開啟相機的自拍鏡頭
中間那行Foreach是在找自拍鏡頭。

2.讓webCam效果更順一點(取自網路的作法)
設定ratio讓Raw Image能自動佔滿整個屏幕(即使手機旋轉),且不會感覺到畫面被拉扯。
我有點忘記原本不加下面這幾段程式碼前的樣子了。

3.拍照:

基本上Shoot()只做一件事。(只是我在這裡有做其他UI的控制)


照片之所以要旋轉是因為我發現拍出來的會歪90度,這裡一樣用(取自網路的)旋轉方法:

壓縮的方法腳本也是取自網路:連結

且壓縮不是只給手機用,只是因為好一點的手機webCam拍照一張都4mb起跳,所以只好壓一下了。(上面這參數大概會壓到1張500多KB)

4.上傳:
string UploadUserURL="要處理的php網址";
WWWForm form = new WWWForm();
form.AddBinaryData("臉部照片POST", FaceImage_bytes );
UnityWebRequest www = UnityWebRequest.Post(UploadUserURL,form);
yield return www.SendWebRequest();

5.php:
$FaceImage=$_FILES["臉部照片POST"];
$imageType =$FaceImage["type"];
$imageData=file_get_contents( $FaceImage["tmp_name"]);

if(substr($imageType,0,5)=="image"){
        echo "執行成功";
        //Remember to remove the slashes when the image is read or downloaded with the "stripslashes" function.
        //雖然出處說讀取時應該移除addslashes增加的斜線,但我實作起來是不移除才能正常顯示
//上傳資料--------------------
         $sql = "INSERT INTO $tableName(欄位名稱)
        VALUES ('". addslashes($imageData) ."')";
        //----------------------------------
        mysqli_query($conn,$sql)or die(mysqli_error($conn));
    }
    else {echo"失敗";}

5.echo輸出:
$imageData=base64_encode($row ["臉部照片row名稱"]);   
echo $imageData;

6.unity接收並轉成Texture2D:
ps.如果用int.prase()解析失敗的話,可以試著移除\r\n再prase
....Replace("\r\n", string.Empty);

FaceImage_bytes = System.Convert.FromBase64String(echo出來的資料);
Texture2D face_img = new Texture2D(1024, 512, TextureFormat.ARGB32, true, true)
            {
                //其他參數,不設應該也沒差
                filterMode = FilterMode.Trilinear,
                wrapMode = TextureWrapMode.Clamp,
                anisoLevel = 1
            };
face_img.LoadImage(faceMatData.FaceImage_bytes);





完-雜談:
打到一半才發現原來VSC的程式碼可以直接帶著格式貼上來
所以會發現一半的文章是圖片表示,一半的是文字 ((請原諒我...

雜談一:
接下來小專題要做有關線上聊天室的,可是我目前就在煩惱該怎麼串流語音輸入;語音資料該不該存入資料庫之類的...
還希望各位能幫忙提點一下了

雜談二:
還記的我之前說正在跟同學做遊戲嗎? 我覺得自己有點被放生了...
我真的只是很想找人做做小遊戲啊...除了比較不會一個人迷惘,還能讓我比較專心在程式上。
遊戲美術,即使是像素風對我來說也是很大的障礙呀....
((我接下來該怎麼堅持呢? 嗚嗚嗚...



生存報告:
附上最近一張介於"想畫"與"不想畫"之間的圖
((八成又會棄稿了

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4612802
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:php|Unity

留言共 5 篇留言

dondon
阿...熟悉的校徽[e17]

12-06 01:25

趴趴鼠Loading
你...你甚麼都沒看到 ((遮12-08 02:34
悠閒紅茶(冷藏中)
好、好厲害...(程式什麼的完全不懂

程式方面只能給予精神支持和鼓勵了[e15]加油!!
不過那張生存報告是「薛丁格的插畫」嗎XDDDD

12-06 04:51

趴趴鼠Loading
感覺我現在的心情就很"薛丁格" (x12-08 02:35
加1@代理住持中(仮)
太專業了(´;ω;`)跟碰到電腦,電腦會自動炸開的我比這境界太高了

12-07 13:36

趴趴鼠Loading
能讓電腦直接炸掉的氣場才厲害吧[e17]12-08 02:36
is樂小呈
佬(´・ω・`)

12-07 14:35

趴趴鼠Loading
不佬[e33]12-08 02:36
dondon
也有很熟悉的中正啊xdd

12-08 11:00

我要留言提醒:您尚未登入,請先登入再留言

12喜歡★news2000tw 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【真的畫圖紓壓而已...... 後一篇:【紓壓繪】紓壓大雜繪...

追蹤私訊

作品資料夾

alexgod29_
原創小說「女巫和來自未來的惡魔」已更新至最新一話,歡迎大家前來小屋觀看,謝謝。看更多我要大聲說7小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】