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

Picture upload to twitter from webcam code uploading same photo every time

我是编码方面的新手,但我已经设法制作了一个程序,当建立 arduino 连接时,该程序会自动在连接的网络摄像头上拍摄,并将拍摄的照片直接上传到 Twitter 页面。

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

我不知道如何解决这个问题,任何帮助将不胜感激。

这是我的代码:

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

这里有一件事没有意义:

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") 保存一个奇怪的文件名并查看它出现的位置。它与您从中加载文件的目录相同吗?