我正在尝试从ftp下载图像到android并在imageview中显示它,但是我在logcat中收到此错误:
D/skia: ------ png error bad adaptive filter value
D/skia: --- codec->getAndroidPixels() failed.
我首先尝试使用commons-net库,然后尝试使用ftp4j库从ftp下载图像。我使用的代码如下:
这是我所谓的图像下载方法:
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(final Marker marker) {
if(marker.getTitle().equals("")){
iw.setVisibility(View.GONE);
}else{
try {
String url = markerRecordHashMap.get(marker).getUrl();
task = new DownloadImageTask().execute(url);
iw.setVisibility(View.VISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
});
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
protected Bitmap doInBackground(String... urls) {
String url = urls[0];
Bitmap targetImage = null;
try {
File f = FTPConnector.getImage(getApplicationContext(), url);
targetImage = BitmapFactory.decodeFile(f.getAbsolutePath());
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return targetImage;
}
protected void onPostExecute(Bitmap result) {
ImageView img = (ImageView) findViewById(R.id.targetImg);
img.setImageBitmap(result);
}
}
这是从ftp部分下载的图像:
public class FTPConnector {
public static File getImage(Context context, String imgPath) throws FTPIllegalReplyException, FTPException, IOException, FTPDataTransferException, FTPAbortedException {
FTPClient mFTPClient = new FTPClient();
mFTPClient.connect(GlobalVars.ftpBaseURL, GlobalVars.ftpPort);
mFTPClient.login("testuser", "123456");
mFTPClient.setType(FTPClient.TYPE_BINARY);
File file = new File(context.getExternalFilesDir(null), "test1.png");
mFTPClient.download("test1.png", file);
mFTPClient.disconnect(false);
return file;
}
}
当我运行上面的代码时,除了这些错误外,我什么也没有得到:
2019-06-24 07:42:32.117 12522-13934/com.xxx.yyy D/skia: ------ png error bad adaptive filter value
2019-06-24 07:42:32.117 12522-13934/com.xxx.yyy D/skia: --- codec->getAndroidPixels() failed.