切換
舊版
前往
大廳
主題

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

%%鼠 拒收病婿 | 2019-12-06 00:49:40 | 巴幣 26 | 人氣 1559

(一個害我壓力山大的專案)
前言:
學校校慶過了,展也展完了~
想說這一路風風雨雨才成功殺青的專案也讓我學到不少。((還有工讀費$$))

取之於社群,還之於社群。
如果沒有每天爬到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的程式碼可以直接帶著格式貼上來
所以會發現一半的文章是圖片表示,一半的是文字 ((請原諒我...

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

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



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

送禮物贊助創作者 !
0
留言

創作回應

dondon
阿...熟悉的校徽[e17]
2019-12-06 01:25:26
%%鼠 拒收病婿
你...你甚麼都沒看到 ((遮
2019-12-08 02:34:49
悠閒紅茶
好、好厲害...(程式什麼的完全不懂

程式方面只能給予精神支持和鼓勵了[e15]加油!!
不過那張生存報告是「薛丁格的插畫」嗎XDDDD
2019-12-06 04:51:07
%%鼠 拒收病婿
感覺我現在的心情就很"薛丁格" (x
2019-12-08 02:35:18
加一@曹洞宗/三論宗
太專業了(´;ω;`)跟碰到電腦,電腦會自動炸開的我比這境界太高了
2019-12-07 13:36:09
%%鼠 拒收病婿
能讓電腦直接炸掉的氣場才厲害吧[e17]
2019-12-08 02:36:11
樂小呈
佬(´・ω・`)
2019-12-07 14:35:36
%%鼠 拒收病婿
不佬[e33]
2019-12-08 02:36:37
dondon
也有很熟悉的中正啊xdd
2019-12-08 11:00:31
追蹤 創作集

作者相關創作

更多創作