下载图片(文件)到SD文件

99 篇文章 0 订阅
public static void down(String urlPath, String saveFileName,
String saveFilePath) {


try {


boolean flag = true;
saveFileName = saveFileName.trim();
saveFilePath = saveFilePath.trim();


File dir = new File(saveFilePath);


if (!dir.exists()) {
dir.mkdirs();
}
File[] files = dir.listFiles();
if (files != null)
for (int i = 0; i < files.length; i++) {
if (files[i].getName().equals(saveFileName))
flag = false;
}


if (flag) {


File f = new File(saveFilePath + "/" + saveFileName);


if (!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
} else if (!f.exists()) {


boolean b = f.createNewFile();
}


URL url = new URL(urlPath);


HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod("GET");
// conn.setRequestProperty("Range", "bytes=" + startposition +
// "-");
InputStream inStream = conn.getInputStream();
// byte[] buffer = new byte[inStream.available()];
byte[] buffer = new byte[1024];
int len = -1;


OutputStream output = new FileOutputStream(f);


while ((len = inStream.read(buffer)) != -1) {
output.write(buffer, 0, len);
}


// inStream.read(buffer);
// output.write(buffer);
output.flush();
output.close();
inStream.close();
// activity.handler.sendEmptyMessage(0);
}
} catch (Exception e) {
e.printStackTrace();
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个用于读取SD卡图片并显示在LCD上的代码示例: ``` #include <SD.h> #include <Adafruit_ILI9341.h> #include <Adafruit_GFX.h> #define TFT_CS 10 #define TFT_RST 9 #define TFT_DC 8 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST); void setup() { // 初始化SD卡 if (!SD.begin(4)) { tft.println("SD卡初始化失败"); return; } // 初始化LCD tft.begin(); tft.fillScreen(ILI9341_BLACK); tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK); tft.setTextSize(2); tft.setCursor(10, 10); tft.println("正在读取图片..."); // 打开图片文件 File imageFile = SD.open("image.bmp"); if (!imageFile) { tft.println("打开图片失败"); return; } // 读取图片文件头信息 uint32_t imageSize = imageFile.size(); uint32_t imageOffset = (uint32_t)imageFile.position(); uint32_t imageStart = imageOffset + 54; // 假设图片文件头为54字节 // 将文件指针移到图片数据开始处 imageFile.seek(imageStart); // 读取图片数据并在LCD上显示 uint16_t imageColor; for (uint32_t i = imageStart; i < imageSize; i += 2) { uint8_t colorBuf[2] = {0}; imageFile.read(colorBuf, 2); imageColor = makeColor(colorBuf[0], colorBuf[1]); // 自定义函数用于将两个字节转换为16位颜色值 tft.drawPixel(x, y, imageColor); // 更新坐标 x++; if (x >= tft.width()) { x = 0; y++; } } // 关闭文件 imageFile.close(); tft.println("图片读取完成"); } void loop() { // 程序循环主体 } uint16_t makeColor(uint8_t r, uint8_t g, uint8_t b) { return tft.color565(r, g, b); } ``` 以上代码使用了Arduino的SD库和Adafruit公司的ILI9341库来实现对SD卡图片的读取以及在LCD上的显示。首先,代码需要初始化SD卡和LCD。然后,它会打开指定的图片文件,并读取文件头信息以确定图片数据的起始位置。接下来,代码通过读取图片数据并使用`drawPixel`函数将每个像素点显示在LCD上。最后,文件被关闭并在LCD上显示读取完成的提示信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值