gpt4 book ai didi

java - 下载图像并将其保存到 SD 卡中

转载 作者:行者123 更新时间:2023-12-01 04:53:44 24 4
gpt4 key购买 nike

我正在尝试下载图像并将其保存到 SD 卡中,有时可以,有时则不行。我需要帮助试图理解为什么,我尝试用谷歌搜索,但找不到答案。

所以这是我的代码,用于检索杂志问题,然后循环遍历 json 数组中的每个项目,然后下载并将它们存储到 SD 卡中。但是有些图像没有下载,而是跳过(查看 logcat)

    /**
* Background Async Task to Load all product by making HTTP Request
* */
class downloadMagazine extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(Store.this);
progressDialog.setMessage("Loading.." + "\n" + "加载中..");
progressDialog.setIndeterminate(false);
progressDialog.setCancelable(false);
progressDialog.show();
}
/**
* getting preview url and then load them
* */
protected String doInBackground(String... args) {
URL myFileUrl = null;

// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_magazine, "GET", params);

// Check your log cat for JSON reponse
//Log.d("All Products: ", json.toString());

try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);

if (success == 1) {
// products found
// Getting Array of Products
mag = json.getJSONArray(TAG_MAGAZINE);

for (int i = 0; i < mag.length(); i++) {
JSONObject c = mag.getJSONObject(i);

// Storing each json item in variable
String magazineUrl = c.getString(TAG_MAGAZINE_URL);
String issueName = c.getString(TAG_MAGAZINE_NAME);

urlList.add(magazineUrl);
issueNameList.add(issueName);
//System.out.println(urlList);
}
}
} catch (JSONException e) {
e.printStackTrace();
}

// Building Parameters
List<NameValuePair> param = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json1 = jParser.makeHttpRequest(urlList.get(pos), "GET", param);

// CHECKING OF JSON RESPONSE
Log.d("All guide: ", json.toString());

try {
issues = json1.getJSONArray(TAG_ISSUE);

for (int i = 0; i < issues.length(); i++) {
JSONObject c = issues.getJSONObject(i);

String image = c.getString(TAG_IMAGE);

imageList.add(image);
//System.out.println(imageList);
}


// STOP THE LOOP
//break;

} catch (JSONException e) {
e.printStackTrace();
}

for (int i = 0; i < imageList.size(); i ++)
{
imageUrl = imageList.get(i).toString();
Log.d("thumbnail", imageUrl);
number = i;
try {
myFileUrl = new URL(imageUrl); // RETRIEVE IMAGE URL
}
catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream in = conn.getInputStream();
Log.i("I'm connected", "Download");
bmImg = BitmapFactory.decodeStream(in);

File filename;
// GET EXTERNAL STORAGE, SAVE FILE THERE
File storagePath = new File(Environment.getExternalStorageDirectory(),folderName+"issue"+issueNumber+"/");
storagePath.mkdirs();

filename = new File(storagePath + "/page"+number+".jpg");
FileOutputStream out = new FileOutputStream(filename);
bmImg.compress(Bitmap.CompressFormat.JPEG, 90, out);

out.flush();
out.close();

MediaStore.Images.Media.insertImage(getContentResolver(),filename.getAbsolutePath(), filename.getName(),
filename.getName());
in.close();

// displayImage();
} catch (IOException e) {
e.printStackTrace();
}
}

return null;

}

这是我的 logcat 每当跳过下载页面时的输出(我知道它与我发布的问题之一类似,但我确实需要帮助解决问题)。我不知道发生了什么,我用谷歌搜索发现许多使用 android 4.0 及以上版本的人都遇到了这个问题

01-23 17:09:29.120: W/System.err(24339): java.io.EOFException
01-23 17:09:29.120: W/System.err(24339): at libcore.io.Streams.readAsciiLine(Streams.java:203)
01-23 17:09:29.120: W/System.err(24339): at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:544)
01-23 17:09:29.120: W/System.err(24339): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:784)
01-23 17:09:29.120: W/System.err(24339): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
01-23 17:09:29.120: W/System.err(24339): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
01-23 17:09:29.130: W/System.err(24339): at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:270)
01-23 17:09:29.130: W/System.err(24339): at com.sfcca.coverflow.Store$downloadMagazine.doInBackground(Store.java:881)
01-23 17:09:29.130: W/System.err(24339): at com.sfcca.coverflow.Store$downloadMagazine.doInBackground(Store.java:1)
01-23 17:09:29.130: W/System.err(24339): at android.os.AsyncTask$2.call(AsyncTask.java:264)
01-23 17:09:29.130: W/System.err(24339): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-23 17:09:29.130: W/System.err(24339): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-23 17:09:29.130: W/System.err(24339): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
01-23 17:09:29.130: W/System.err(24339): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-23 17:09:29.130: W/System.err(24339): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-23 17:09:29.130: W/System.err(24339): at java.lang.Thread.run(Thread.java:856)

最佳答案

检查您是否已向 list 授予适当的权限

 <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

关于java - 下载图像并将其保存到 SD 卡中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14514642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com