我是编码的初学者,但我设法创建了一个程序,当自动连接时,会自动拍摄附加的网络摄像头,并将拍摄的内容直接上传到推特页面。
我现在遇到的问题是,每次我触发连接时,它都会上传我每次拍摄/上传的第一张照片,而不是相机当前正在查看的新照片。
我无法弄清楚如何解决这个问题,我们将非常感谢任何帮助。
这是我的代码:
import twitter4j.conf.*;
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import java.util.*;
import processing.video.*;
import processing.serial.*;
int picCount = 0;
Capture webcam;
Twitter twitter;
Serial myPort; // The serial port
String inString; // Input string from serial port
int lf = 10; // ASCII linefeed
void setup()
{
size(640, 480);
webcam = new Capture(this, 640, 480);
String[] devices = Capture.list();
println(devices);
webcam.start();
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("****");
cb.setOAuthConsumerSecret("****");
cb.setOAuthAccessToken("****");
cb.setOAuthAccessTokenSecret("****");
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.bufferUntil(lf);
}
void draw()
{
if (webcam.available() == true) {
webcam.read();
image(webcam, 0, 0);
}
if (inString != null) {
inString = inString.trim();
int val = int(inString);
if (val == 1) {
println("saving...");
save("cam" + picCount + ".png");
picCount++;
//send tweet
File file = new File("C:\\Users\\Jake\\Documents\\Processing\\Twitter test 2\\Twittertest2\\cam" + picCount + ".png");
delay (3000);
tweetPic(file, "");
}
}
}
void testPassingFile(File _file)
{
println(_file.exists());
println(_file.getName());
println(_file.getPath());
println(_file.canRead());
}
void tweetPic(File _file, String theTweet)
{
try
{
StatusUpdate status = new StatusUpdate(theTweet);
status.setMedia(_file);
twitter.updateStatus(status);
}
catch (TwitterException te)
{
println("Error: "+ te.getMessage());
}
}
void serialEvent(Serial p) {
inString = p.readString();
}
答案 0 :(得分:1)
这是一件没有意义的事情:
save("cam" + picCount + ".png"); //picCount is 3 here, you save cam3.png
picCount++; //picCount is now 4
File file = new File("C:\\Users\\Jake\\Documents\\Processing\\Twitter test 2\\Twittertest2\\cam" + picCount + ".png"); //but you send cam4.png
请注意,在加载文件进行推文之前,您需要递增picCount
。这并没有多大意义 - 具有该名称的文件甚至还不存在!
通过将增量移至底部来解决此问题。如果这不能解决您的问题,那么您必须确保save("cam" + picCount + ".png");
保存的文件与为推文加载的文件相同。从您的代码现在的工作方式来看,它们看起来像是在不同的目录中。
尝试使用save("WeirdFileName.png")
保存一个奇怪的文件名并查看显示的位置。它是否在您从[