Ich habe Bild mit Webcam erfasst und wenn ich die Taste drücken sendet es mail.Ich benutze while-Schleife wie in der folgenden Code gezeigt, läuft dieser Code perfekt, aber das Problem ist, dieses Programm so senden viele Bilder (auch früher capured Bild), während wir das Programm zu stoppen, so dass es so viele Bilder nur in einer Mail angehängt sind. Jetzt will ich Programm kontinuierlich in Raspberry Pi laufen, aber immer noch sollte es nur die zuletzt aufgenommene Bild sein, was muss ich dafür etwas tun?Raspberry Pi: senden nur zuletzt aufgenommenes Bild mit Webcam
Vielen Dank im Voraus.
Dies ist mein Code:
import smtplib
import time
import subprocess
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
import RPi.GPIO as GPIO
# Define these once; use them twice!
strFrom = '[email protected]'
strTo = '[email protected]'
#create email
# Create the root message and fill in the from, to, and subj$
msgRoot = MIMEMultipart()
msgRoot['Subject'] = 'subject'
msgRoot['From'] = strFrom
msgRoot['To'] = strTo
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN)
print "press button to send email"
while True:
input=GPIO.input(4)
if input == True:
print "button pressed"
subprocess.Popen(["fswebcam","-r 640x480", "capture.jpg"])
time.sleep(2)
# This example assumes the image is in the current
# directory
fp = open('capture.jpg', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgRoot.attach(msgImage)
# send mail
s = smtplib.SMTP('smtp.gmail.com',587)
s.starttls()
s.login('[email protected]' , 'password')
s.sendmail(strFrom, strTo,msgRoot.as_string())
s.close()
print "Email sent"
time.sleep(0.2)