質問編集履歴

3

add python code.

2023/01/29 18:14

投稿

alizona
alizona

スコア126

test CHANGED
@@ -1 +1 @@
1
- django内でカメラから撮影(取得)した画像を、アップロードするときに選択させたい。(一度PCに保存せずに
1
+ django内でカメラから撮影(取得)した画像を、一度PCに保存せずにアップロードしたいです。
test CHANGED
@@ -1,28 +1,76 @@
1
1
  タスク管理アプリを djangoで作ってます。
2
2
 
3
-
4
- django内で起動したカメラから取得した画像、動画を直接 画像選択ボタンから選択したいです。
3
+ django内で起動したカメラから取得した画像、動画を ファイル選択の過程を通さず、直接アップロードしたいです。
5
-
6
- フォーム内で処理をするのであれば下記のような Image: Choose Fileのような場所でセットしなくてはいけないのかと思いました。
7
4
 
8
5
 
9
6
  *取得する画像について。
10
7
  現時点では画像は、ret, jpeg = cv2.imencode('.jpg', frame) で jpgを取得しています。
11
8
 
12
-
13
- のようにmodels.py 定義する下の画像のような [Image: Choose File ]選択ボタンがれるですが、
9
+ 下記のような ファイル選択する工程を省いてdjango内で取得したjpgをボタンが押さたらformでpost すようにしたいです
14
- どうすれば、カメラから取得した jpegを自動で選択させることができるのでしょうか?
15
- ```python
16
- class Comment(models.Model):
17
- post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE)
18
- name = models.CharField(max_length=255)
19
- body= models.TextField()
20
- posted_date=models.DateTimeField(auto_now_add=True)
21
- image = CloudinaryField('image', null=True, blank=True)
22
- video = CloudinaryField('video', null=True, blank=True)
23
- ```
24
10
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-30/ce0d4ae8-f51f-4655-bec0-e92c35c14ae5.png)
25
11
 
26
- カメラから読み込んだ 画像、動画をcloudinary にアップロードしてから、そこから
27
- cloudinary に保存されている画像を一覧表示させて、そこから選ばせるしかないでしょうか?
28
12
 
13
+ ```python
14
+ def post_detail(request, pk):
15
+ post = Post.objects.get(pk=pk)
16
+ if request.method == 'POST':
17
+ form = CommentForm(request.POST, request.FILES)
18
+
19
+ if form.is_valid():
20
+ comment=form.save(commit=False)
21
+ comment.post=post
22
+ comment.name=request.user
23
+
24
+
25
+ if 'video' in request.FILES:
26
+ video = request.FILES['video']
27
+ result = cloudinary.uploader.upload_large(video)
28
+ video_url = result['url']
29
+ format=os.path.splitext(video_url)
30
+
31
+ form.cleaned_data['video'] = video_url
32
+ comment.video=form.cleaned_data['video']+'????'+str(format)+'????'
33
+
34
+ if 'image' in request.FILES:
35
+ image=request.FILES['image']
36
+ result = cloudinary.uploader.upload(image)
37
+ image_url = result['url']
38
+ form.cleaned_data['image'] = image_url
39
+ comment.image=form.cleaned_data['image']
40
+
41
+ jpg=generate_frame()
42
+ if jpg:
43
+ result = cloudinary.uploader.upload(jpg)
44
+ image_url = result['url']
45
+ form.cleaned_data['image'] = image_url
46
+ comment.verified_image=form.cleaned_data['image']
47
+
48
+
49
+ comment.save()
50
+ return redirect("post_detail",pk=post.pk)
51
+ else:
52
+ form = CommentForm()
53
+
54
+ return render(request, "registration/post_detail.html",{"post":post, "form":form})
55
+
56
+
57
+ #画像を取得(動画)
58
+ def generate_frame():
59
+ capture = cv2.VideoCapture(0) # USBカメラから
60
+
61
+ did_not_get_image=True
62
+ while did_not_get_image:
63
+ if not capture.isOpened():
64
+ print("Capture is not opened.")
65
+ break
66
+ # カメラからフレーム画像を取得
67
+ ret, frame = capture.read()
68
+ if not ret:
69
+ print("Failed to read frame.")
70
+ break
71
+ # フレーム画像バイナリに変換
72
+ ret, jpg = cv2.imencode('.jpg', frame)
73
+ did_not_get_image=False
74
+ capture.release()
75
+ return jpg
76
+ ```

2

書式

2023/01/29 18:02

投稿

alizona
alizona

スコア126

test CHANGED
@@ -1 +1 @@
1
- django内でカメラから撮影(取得)した画像を、そのままcloudinary に アップロードたいです
1
+ django内でカメラから撮影(取得)した画像を、アップロードするときに選択させたい。(一度PCに保存せずに)
test CHANGED
@@ -1,23 +1,17 @@
1
1
  タスク管理アプリを djangoで作ってます。
2
2
 
3
- 現在、タスクが終了したらコメント欄に終了したことを意味する画像をアップロードしています。
4
3
 
5
- example ) 会員登録完了のconfirmation page のスクショ投稿
4
+ django内で起動したカメラから取得した画像、動画直接 画像選択ボタンから選択したいです。
5
+
6
+ フォーム内で処理をするのであれば下記のような Image: Choose Fileのような場所でセットしなくてはいけないのかと思いました。
6
7
 
7
8
 
8
- しかし、画像を撮影した時間を証明することができないため、現時点のような画像をパソコンまたはスマホの中から選択して投稿する形でなく、
9
-
10
- django内で起動したカメラから取得した画像、動画を直接 cloudinary にアップロードするという方法を取りたいです。
11
-
12
- その際に、一度 カメラから読み込んだ 画像、動画をcloudinary にアップロードしてから、そこから
13
- cloudinary に保存されている画像を一覧表示させ、そこから選ばせるようにするのか、
9
+ *取得する画像につい
14
- それとも直接、model の fieldに 撮影し終えた画像、動画をセットすることができるのかを聞きたいです。
15
-
16
-
17
10
  現時点では画像は、ret, jpeg = cv2.imencode('.jpg', frame) で jpgを取得しています。
18
11
 
19
12
 
20
- このようにmodels.py を定義すると、下の画像のような選択ボタンが作れるのですが、どうすれば jpegを cloudinary に uploadできるのでしょうか? フローを教えていただきたいです。
13
+ このようにmodels.py を定義すると、下の画像のような [Image: Choose File ]選択ボタンが作れるのですが、
14
+ どうすれば、カメラから取得した jpegを自動で選択させることができるのでしょうか?
21
15
  ```python
22
16
  class Comment(models.Model):
23
17
  post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE)
@@ -28,3 +22,7 @@
28
22
  video = CloudinaryField('video', null=True, blank=True)
29
23
  ```
30
24
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-30/ce0d4ae8-f51f-4655-bec0-e92c35c14ae5.png)
25
+
26
+ カメラから読み込んだ 画像、動画をcloudinary にアップロードしてから、そこから
27
+ cloudinary に保存されている画像を一覧表示させて、そこから選ばせるしかないでしょうか?
28
+

1

detail

2023/01/29 17:36

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -16,3 +16,15 @@
16
16
 
17
17
  現時点では画像は、ret, jpeg = cv2.imencode('.jpg', frame) で jpgを取得しています。
18
18
 
19
+
20
+ このようにmodels.py を定義すると、下の画像のような選択ボタンが作れるのですが、どうすれば jpegを cloudinary に uploadできるのでしょうか? フローを教えていただきたいです。
21
+ ```python
22
+ class Comment(models.Model):
23
+ post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE)
24
+ name = models.CharField(max_length=255)
25
+ body= models.TextField()
26
+ posted_date=models.DateTimeField(auto_now_add=True)
27
+ image = CloudinaryField('image', null=True, blank=True)
28
+ video = CloudinaryField('video', null=True, blank=True)
29
+ ```
30
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-30/ce0d4ae8-f51f-4655-bec0-e92c35c14ae5.png)