Android 从ftp服务器在屏幕上显示图像

Android 从ftp服务器在屏幕上显示图像,android,ftp,imageview,Android,Ftp,Imageview,我几乎建立了我的android应用程序,但我有一些麻烦。我的应用程序使用ftp连接在服务器上上传照片,并在屏幕上显示这些照片。使用“上传部分”我没有问题,但当我选择一张照片并想在屏幕上显示它时,我遇到了一些问题。似乎我的形象模糊或支离破碎。我想这是因为重新定了尺寸,但用这种方法我尝试了很多算法……都不成功 请告诉我如何在屏幕上显示来自此ftp服务器的图像,图像显示质量良好,没有“模糊或碎片”部分,谢谢 这是我的“展示形象”课 }解码和显示图像似乎没问题。您可以通过以下方式进行改进 我不确定,但我

我几乎建立了我的android应用程序,但我有一些麻烦。我的应用程序使用ftp连接在服务器上上传照片,并在屏幕上显示这些照片。使用“上传部分”我没有问题,但当我选择一张照片并想在屏幕上显示它时,我遇到了一些问题。似乎我的形象模糊或支离破碎。我想这是因为重新定了尺寸,但用这种方法我尝试了很多算法……都不成功 请告诉我如何在屏幕上显示来自此ftp服务器的图像,图像显示质量良好,没有“模糊或碎片”部分,谢谢

这是我的“展示形象”课


}解码和显示图像似乎没问题。您可以通过以下方式进行改进

我不确定,但我认为你的问题应该是这个问题:

尝试创建类:

public class FlushedInputStream extends FilterInputStream {

    public FlushedInputStream(InputStream inputStream) {
        super(inputStream);
    }

    @Override
    public long skip(long n) throws IOException {
        long totalBytesSkipped = 0L;
        while (totalBytesSkipped < n) {
            long bytesSkipped = in.skip(n - totalBytesSkipped);
            if (bytesSkipped == 0L) {
                int by_te = read();
                if (by_te < 0) {
                    break; // we reached EOF
                } else {
                    bytesSkipped = 1; // we read one byte
                }
            }
            totalBytesSkipped += bytesSkipped;
        }
        return totalBytesSkipped;
    }
}
公共类FlushedInputStream扩展FilterInputStream{
公共FlushedInputStream(InputStream InputStream){
超级(输入流);
}
@凌驾
公共长跳过(长n)引发IOException{
长的总重量=0升;
while(totalBytesSkipped
和使用:


bm=BitmapFactory.decodeStream(新的FlushedInputStream(entity.getContent())

我尝试了这个类,但是。。。不起作用。。。我遇到了同样的问题,好的,你能不能发送一张加载不好的图片的打印屏幕?Thanx.我对decodeStream也有一些问题,但不是这样。你在其他设备上试过吗?而
decodeResource
是否可以正常工作?根据图像,似乎跳过了一些像素。尝试解码另一个图像(例如来自维基百科的图像),您将看到哪里可能有问题。我曾尝试在不同的设备上运行我的应用程序,但我遇到了相同的问题。。。而且解码资源似乎工作得很好。。。在logCat中,一切正常。。。。但是thx支持:DRESOLVED!!!。。。我只是添加了一段代码client.setFileType(FTP.BINARY_FILE_TYPE)。。。
public class FlushedInputStream extends FilterInputStream {

    public FlushedInputStream(InputStream inputStream) {
        super(inputStream);
    }

    @Override
    public long skip(long n) throws IOException {
        long totalBytesSkipped = 0L;
        while (totalBytesSkipped < n) {
            long bytesSkipped = in.skip(n - totalBytesSkipped);
            if (bytesSkipped == 0L) {
                int by_te = read();
                if (by_te < 0) {
                    break; // we reached EOF
                } else {
                    bytesSkipped = 1; // we read one byte
                }
            }
            totalBytesSkipped += bytesSkipped;
        }
        return totalBytesSkipped;
    }
}