标签: inputstream

输入流到BufferedImage转换会损坏文件

我正在使用servelt上传一些图像文件.我想调整图像大小.我使用下面的行将源转换为BufferedImage.

InputStream imageStream = item.getInputStream();

BufferedImage imageBuffer = ImageIO.read(imageStream);

然后我调整图像大小并写入一个位置.但是,所有输出文件的大小都是0.

我使用以下代码来调整图像大小.

AffineTransform at = new AffineTransform();
if(sx != 0)
    at.scale( sx , sx );
AffineTransformOp ato = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
uploadImage = ato.filter(uploadImage, null); //uploadImage == BufferedImage
Run Code Online (Sandbox Code Playgroud)

有没有什么好方法可以将输入流转换为bufferedImage而不会损坏图像?我确信图片上传了.但是,在转换为BufferedImage之后,该文件已损坏.

我通过向doPost()方法提交表单来上传.下面的行给出了一个列表项的InputStream.

InputStream imageStream = item.getInputStream();

而且,我正在写它

ImageIO.write(image, "jpg", new File(path + ".jpg"));

更新

java.awt.image.ImagingOpException: Unable to transform src image
at java.awt.image.AffineTransformOp.filter(Unknown Source)
at com.pricar.servlet.imageupload.ImageUploadServlet.reSize(ImageUploadServlet.java:100)
at com.pricar.servlet.imageupload.ImageUploadServlet.doPost(ImageUploadServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage inputstream image-processing

2
推荐指数
1
解决办法
2万
查看次数

为什么在HTTP客户端中需要InputStream?(JAVA)

我一直在使用java中的各种HTTP客户端从网站获取各种信息或使用Web服务(如谷歌地图地理编码器)

我正在使用的当前客户端是Apache 的HTTP Components客户端.

我一直想知道为什么没有.getText()或.getBytes()方法只是简单地给我网址的所有内容,而是有返回InputStream的方法.这是什么意思或原因?

这不像我一直与服务器通信,所以我将不得不继续检查流.HTTP是无状态的,那么为什么没有getText()/ getBytes()方法只是在收到HTTP响应的内容(如String或byte [])之后返回?

java inputstream apache-httpclient-4.x

2
推荐指数
1
解决办法
2105
查看次数

在客户端和服务器进程之间使用ObjectInputStream和ObjectOutputStream

我开发了一个客户端 - 服务器java应用程序,我使用ObjectOutputStream和ObjectInputStream在客户端和服务器进程之间发送和接收数据.我需要发送数组或对象或原始数据,但当我使用ObjectOutputStream和ObjectInputStream发送和接收原始值(writeDouble(),readDouble(),writeUTF(),readUTF())时出现问题.该计划暂停并停止工作.为什么,问题是什么?

这些是我程序的一部分

// client program

    ObjectOutputStream toServer;
    ObjectInputStream fromServer;

// Establish connection with the server
            Socket socket = new Socket(host, 7000);

            // Create an output stream to the server
            toServer = new ObjectOutputStream(socket.getOutputStream());
            fromServer = new ObjectInputStream(socket.getInputStream());

double num1 = Double.parseDouble(jtf1.getText().trim());
                    double num2 = Double.parseDouble(jtf2.getText().trim());
                    try {
                        toServer.writeUTF("multiply");
                        toServer.writeDouble(num1);
                        toServer.writeDouble(num2);
                        double result = fromServer.readDouble();
                        res.setText(String.valueOf(result));
                    } catch (IOException ex) {
                        System.err.println(ex);
                    }

// server program

private ObjectOutputStream outputToClient;
    private ObjectInputStream inputFromClient;

// Create a server socket
            ServerSocket serverSocket …
Run Code Online (Sandbox Code Playgroud)

java sockets inputstream outputstream

2
推荐指数
1
解决办法
9481
查看次数

从InputStream读取到byte []会抛出IndexOutOfBoundsException

我显然不知道问题出在哪里!首先我要求客户向我发送byte[]他要发送的长度,然后我读这个长度.

int i = 323292; // length of incoming Byte[]
byte[] b = new byte[i]; 
int readBytes=inputStream.read(b,0,b.length);
Run Code Online (Sandbox Code Playgroud)

但它始终保持阅读readBytes比我少.而且我确信客户端会发送整个邮件byte[].

我试着把它放在一个循环中,直到我读取的总字节数是i,但是在第二次迭代后我总是得到IndexOutOfBoundsException!这是代码

boolean flag = true;
int i = 323292;
int threshold = 0;
byte[] b = new byte[i];
int read = 0;
while (flag) {
    if (threshold < i) {
        System.out.println(threshold);
        try {
            read = inputStreamFromClient.read(b, threshold, b.length);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        threshold = threshold + read;
    } else { …
Run Code Online (Sandbox Code Playgroud)

java sockets networking inputstream

2
推荐指数
1
解决办法
1877
查看次数

python从已打开的文件中获取数据

f=open("vmi","w")
f.write("asdf")
import os
os.path.getsize("vmi")
#0 byte
f.close()
os.path.getsize("vmi")
# 4 bytes
Run Code Online (Sandbox Code Playgroud)

在文件关闭之前,在程序执行时我可以找到丢失的4个字节?

python inputstream file

2
推荐指数
1
解决办法
998
查看次数

Java - getResourceAsStream不起作用(Eclipse)

我尝试提取一个附加在我的"src"文件夹中的文件.

所以我想从File获取Inputstream并将其写入例如c:/file.txt

我的代码:

InputStream is = Main.class.getResourceAsStream("test.txt");

OutputStream os = new FileOutputStream("c:/file.txt");
byte[] buffer = new byte[4096];
int length;
while ((length = is.read(buffer)) > 0) {
    os.write(buffer, 0, length);
}
os.close();
is.close();
Run Code Online (Sandbox Code Playgroud)

错误:

" Type mismatch: Eclipse cannot convert from java.io.InputStream to 
                 org.omg.CORBA.portable.InputStream "
Run Code Online (Sandbox Code Playgroud)

谢谢

java inputstream outputstream

2
推荐指数
1
解决办法
3113
查看次数

如何从InputStream创建图像,调整其大小并保存它?

我在获得此代码InputStream并创建图像的地方有此代码:

Part file;
// more code
try {
        InputStream is = file.getInputStream();

        File f = new File("C:\\ImagenesAlmacen\\QR\\olaKeAse.jpg");

        OutputStream os = new FileOutputStream(f);
        byte[] buf = new byte[1024];
        int len;

        while ((len = is.read(buf)) > 0) {
            os.write(buf, 0, len);
        }

        os.close();
        is.close();

    } catch (IOException e) {
        System.out.println("Error");
    }
Run Code Online (Sandbox Code Playgroud)

问题是,如果我从 InputStream

那么如何调整我从中获得的InputStream尺寸,然后创建该尺寸调整后的图像。我想将图像的最大面设置为180px并用该比例调整另一面的大小。

例:

图片= 289px * 206px 调整大小的图片= 180px* 128px

java resize image inputstream file

2
推荐指数
1
解决办法
8596
查看次数

如何将InputStream()转换为Scanner()Java

我对Android应用程序工作,所以我需要使用InputStream()读取TXT文件,但我也有几种方法,只有一起工作Scanner(),所以我需要一种方法来转换InputStream()Scanner().

提前致谢.

java text inputstream file

2
推荐指数
1
解决办法
6484
查看次数

线程库的奇怪行为

我不知道这个主题是否与std :: thread库或流有关.看看下面的例子:

#include <thread>
#include <iostream>

void read(){
    int bar;
    std::cout << "Enter an int: ";
    std::cin >> bar;
}

void print(){
    std::cout << "foo";
}

int main(){
    std::thread rT(read);
    std::thread pT(print);
    rT.join();
    pT.join();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不在乎它是否会在执行read()函数之前或之后打印"foo"字符串.困扰我的是,当它在执行print()函数之前要求输入时,它实际上会挂起执行.我必须单击"输入"或用一些数据提供std :: cin才能看到"foo"字符串.下面您可以看到该程序行为的三种可能方案:

1.
>> Enter an int: //here I've clicked enter
>> foo
>> 12 //here I've written "12" and clicked enter
//end of execution

2.
>> fooEnter an int: 12 //here I've written "12" and clicked enter
//end of execution …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading inputstream outputstream c++11

2
推荐指数
1
解决办法
139
查看次数

java中的设计模式无法识别

我有一个问题,下面的代码的设计模式的名称是什么.

FileInputStream fin = new FileInputStream("X.zip");  
BufferedInputStream bin = new BufferedInputStream(fin);
ZipInputStream zin = new ZipInputStream(bin);
Run Code Online (Sandbox Code Playgroud)

谁能帮我 ?谢谢.

java design-patterns inputstream

2
推荐指数
1
解决办法
126
查看次数