图片从每次上传相同照片的网络摄像头代码上传到推特

时间:2016-01-14 20:27:50

标签: java upload processing webcam

我是编码的初学者,但我设法创建了一个程序,当自动连接时,会自动拍摄附加的网络摄像头,并将拍摄的内容直接上传到推特页面。

我现在遇到的问题是,每次我触发连接时,它都会上传我每次拍摄/上传的第一张照片,而不是相机当前正在查看的新照片。

我无法弄清楚如何解决这个问题,我们将非常感谢任何帮助。

这是我的代码:

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();
}

1 个答案:

答案 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")保存一个奇怪的文件名并查看显示的位置。它是否在您从[

]加载文件的同一目录中