-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCameraController.cs
97 lines (85 loc) · 2.97 KB
/
CameraController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System.Collections;
using System.IO;
using UnityEngine;
using Firebase;
using Firebase.Storage;
using System.Threading.Tasks;
public class CameraController : MonoBehaviour
{
private WebCamTexture webcamTexture;
private FirebaseStorage firebaseStorage;
private StorageReference storageReference;
private bool isWebcamReady = false;
private void Start()
{
// FirebaseStorage ve StorageReference nesnelerini oluşturun
firebaseStorage = FirebaseStorage.DefaultInstance;
storageReference = firebaseStorage.GetReferenceFromUrl("gs://unity-capture-project.appspot.com");
}
private void Update()
{
// Space tuşuna basıldığında görüntüyü dosyaya kaydet ve Firebase'e yükle
if (Input.GetKeyDown(KeyCode.Space))
{
if (!isWebcamReady)
{
StartWebcam();
}
else
{
StartCoroutine(SaveAndUploadWebcamImage());
}
}
}
private void StartWebcam()
{
// Tüm kameraları al
WebCamDevice[] devices = WebCamTexture.devices;
if (devices.Length == 0)
{
Debug.Log("Kamera bulunamadı.");
return;
}
// Birinci kamerayı aç
webcamTexture = new WebCamTexture(devices[0].name);
webcamTexture.Play();
isWebcamReady = true;
}
private IEnumerator SaveAndUploadWebcamImage()
{
yield return new WaitForEndOfFrame();
// Raw görüntüyü al
Texture2D snapshot = new Texture2D(webcamTexture.width, webcamTexture.height);
snapshot.SetPixels(webcamTexture.GetPixels());
snapshot.Apply();
// Görüntüyü dosyaya kaydet
byte[] bytes = snapshot.EncodeToPNG();
string fileName = "screenshot" + GetRandomFileName() + ".png";
string filePath = Path.Combine(Application.persistentDataPath, fileName);
File.WriteAllBytes(filePath, bytes);
// Firebase'e yükle
UploadImageToFirebase(filePath, fileName);
}
private string GetRandomFileName()
{
// Rastgele 1-1000 arasında bir sayı oluşturun ve string olarak döndürün
return Random.Range(1, 1001).ToString();
}
private void UploadImageToFirebase(string filePath, string fileName)
{
// Firebase Storage'a yükle
storageReference.Child(fileName).PutFileAsync(filePath)
.ContinueWith((Task<StorageMetadata> task) =>
{
if (task.IsFaulted || task.IsCanceled)
{
Debug.Log("Yükleme başarısız oldu.");
}
else
{
Debug.Log("Görüntü başarıyla Firebase'e yüklendi.");
// Yükleme tamamlandıktan sonra, gerekiyorsa işlemler yapabilirsiniz.
}
});
}
}