Потоковое изображение из Java в PHP?

Я делаю скриншот своего рабочего стола, и я хочу знать, как бы я пошел, если я хочу отправить его на сайт php, а затем отобразить его?

Я сделал это и никаких результатов о потоковой передаче.

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import javax.imageio.ImageIO;
public class Stream{

static public void captureScreen() throws Exception {
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
Rectangle screenRectangle = new Rectangle(screenSize);
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(screenRectangle);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ImageIO.write(image, "png", buffer);
byte[] data = buffer.toByteArray();
try {
// open a connection to the site
URL url = new URL("http://futuretechs.eu/stream.php");
URLConnection con = url.openConnection();
// activate the output
con.setDoOutput(true);
PrintStream ps = new PrintStream(con.getOutputStream());
// send your parameters to your site
ps.print("image=" + encodeArray(data));

System.out.println(encodeArray(data));

// we have to get the input stream in order to actually send the request
con.getInputStream();

// close the print stream
ps.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
try{
System.out.println("[ Stream Started ]");

while(true){
Thread.currentThread().sleep(100);
Stream.captureScreen();
}

// System.out.println("[ Stream Ended ]");
}
catch(Exception e)
{
e.printStackTrace();
}
}

static String encodeArray(byte[] in) throws IOException {
StringBuffer out = new StringBuffer();
out.append(Base64Coder.encode(in, 0, in.length));
return out.toString();
}
}

Как теперь я посылаю из java байт [] в php и играю в него?

Так было бы так

Клиентская программа Java отправляет на сайт php контент byte [], а затем php показывает его пользователю, который находится на сайте?

Спасибо!

РЕДАКТИРОВАТЬ: КОД ОБНОВЛЕНО

0

Решение

Что это за сайт, на который вы хотите загрузить содержимое скриншота? Этот сайт в интернете?

Есть разные подходы.
— У вас может быть страница php, которая ожидает HTTP-запрос POST, со снимком экрана в полезной нагрузке, в то время как сам сайт имеет php-модуль, работающий на этом сервере и запускаемый веб-запросом.
— Этот сервер, вероятно, поддерживает WebDav, тогда вы можете загрузить свой скриншот через HTTP-PUT и вызвать php-сайт с HTTP-GET (при отправке имени файла с вашими HTTP-GET-Args).

Трудно сказать, если мы не знаем php-сайт, это API и / или его поведение.

0

Другие решения

ну лучше конвертировать байты изображения в base64 перед отправкой в ​​php
когда вы отправляете в php, вы можете использовать эту функцию imagecreatefromstring ($ image_data) для отображения

display.php

<?php
$image = $_POST['image'];
$data = base64_decode($image);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
?>

это должно работать с (PHP 4> = 4.0.4, PHP 5)

Дайте мне знать, если это работает 🙂

Редактировать :

Я не очень хорошо с Java, попробуйте ниже

Как спросил код Java

try {
// open a connection to the site
URL url = new URL("http://www.yourdomain.com/yourphpscript.php");
URLConnection con = url.openConnection();
// activate the output
con.setDoOutput(true);
PrintStream ps = new PrintStream(con.getOutputStream());
// send your parameters to your site
ps.print("image=BASE64_ENCODED_STRING_HERE");

// we have to get the input stream in order to actually send the request
con.getInputStream();

// close the print stream
ps.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

или использовать HTTP-клиент в Java

HttpClient client = new HttpClient();
PostMethod method = new PostMethod("http://www.yourdomain.com/yourphpscript.php");
method.addParamezter("image","BASE64_ENCODED_STRING"); // or whatever
int statusCode = client.executeMethod(method);
0

По вопросам рекламы [email protected]