使用TinyPNG提供的API,对图片进行压缩(C#)

项目需要,经常需要手动压缩图片,流程太过麻烦,效率低下。所以写了一个小程序,以提高工作效率

  1. using System;
  2. using System.Net;
  3. using System.Text;
  4. using System.IO;
  5. class Program
  6. {
  7. static void Main()
  8. {
  9. Console.WriteLine("请输入TinyPng.com的API KEY,获取地址:https://tinypng.com/developers");
  10. string key = Console.ReadLine();
  11. if (!System.IO.Directory.Exists("NewImg"))
  12. {
  13. System.IO.Directory.CreateDirectory("NewImg");
  14. Console.WriteLine("已创建NewImg目录,请把需要处理的图片放到该目录下");
  15. Console.ReadKey(true);
  16. return;
  17. }
  18. if (!System.IO.Directory.Exists("CompressedImg")){
  19. System.IO.Directory.CreateDirectory("CompressedImg");
  20. }
  21. string url = "https://api.tinify.com/shrink";
  22. string[] fileStrs = System.IO.Directory.GetFiles("NewImg");
  23. Console.WriteLine("共" + fileStrs.Length + "个文件,请等待下载完成...");
  24. int num = 0;
  25. foreach (string s in fileStrs)
  26. {
  27. System.IO.FileInfo info = new System.IO.FileInfo(s);
  28. if (info.Extension == ".png" || info.Extension == ".jpg")
  29. {
  30. string input = @"NewImg/" + info.Name;
  31. string output = @"CompressedImg/" + info.Name;
  32. GetCompressImg(url, key, input, output);
  33. num++;
  34. }
  35. }
  36. Console.WriteLine("文件已下载到CompressedImg文件夹下,共" + num + "个文件");
  37. Console.ReadKey(true);
  38. }
  39. static public void GetCompressImg(string url,string key,string input,string output){
  40. WebClient client = new WebClient();
  41. string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes("api:" + key));
  42. client.Headers.Add(HttpRequestHeader.Authorization, "Basic " + auth);
  43. try
  44. {
  45. client.UploadData(url, File.ReadAllBytes(input));
  46. client.DownloadFile(client.ResponseHeaders["Location"], output);
  47. }
  48. catch (WebException)
  49. {
  50. Console.WriteLine("网络请求失败:" + input);
  51. }
  52. }
  53. }

null

时间: 2024-10-15 21:30:52

使用TinyPNG提供的API,对图片进行压缩(C#)的相关文章

使用Servlet3.0提供的API实现文件上传

在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不需要借助任何第三方上传组件,直接使用Servlet3.0提供的API就能够实现文件上传功能了. 一.使用Servlet3.0提供的API实现文件上传 1.1.编写上传页面 1 <%@ page language="java" pageEncoding="UTF-8"

利用高德地图官方提供的API实现模拟定位的功能

使用高德地图API需要申请一个开发者ID号以及我所用的相关资源:  http://pan.baidu.com/disk/home?fr=ibaidu 该文件夹中有一个官方文档,AMap_IOS_API_Guid,提供了使用方法供开发者参阅. 利用高德地图官方提供的API实现模拟定位的功能,布布扣,bubuko.com

03SQLite的增删改查(Google提供的API)

SQLite的增删改查(Google提供的API) SQLiteDatabase 除了前面给大家介绍的execSQL()和rawQuery()方法, SQLiteDatabase还专门提供了对应于添加.删除.更新.查询的操作方法:insert().delete().update()和query() .这些方法实际上是给那些不太了解SQL语法的菜鸟使用的,对于熟悉SQL语法的程序员而言,直接使用execSQL()和rawQuery()方法执行SQL语句就能完成数据的添加.删除.更新.查询操作. I

演示如何在 WebForm 中提供 web api 服务

Global.asax.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Routing; using System.Web.Security; using System.Web.SessionState; using System.Web.Http; namespace WebApiWebFormHost { public class

使用kaggle内提供的Api下载数据

如何在kaggle平台使用官方提供的api下载数据? 1. 首先在kaggle个人资料处生成秘钥(点击头像,再点击My Account进入) 然后会自动下载一个名为 kaggle.json 的文件. 2. 把该文件kaggle.json复制到/home/xx/.kaggle下. 3. 使用提供的api代码,进行下载. 例如: kaggle competitions download -c the-nature-conservancy-fisheries-monitoring 原文地址:https

[转]在static代码块或static变量的初始化过程中使用ServiceManager提供的api的陷阱

一. 案例 1.源码: /** @hide */ private TelephonyManager(int slotId) { mContext = null; mSlotId = slotId; if (sRegistry == null) { if (sRegistry == null) { sRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService( "telephony.registry")

与json-server对接,为组件提供CRUD API功能

# 工程所要实现的功能: 与json—server对接,为组件提供CRUD API #实现思路 注意:前提条件,一定要启动json-server(启动方法:进入db.json所在文件路径 ,终端输入:json-server --watch db.json ) 验证json-server 是否可用.方法:http://localhost:3000/products 有返回数据 1. 引入HttpClientModule 2. 创建一个类(Product) ng g class product ex

前端JS利用canvas的drawImage()对图片进行压缩

对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 1.由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅,同时大大降低了网络异常导致上传失败风险. 2.最重要的体验改进点:省略了图片的再加工成本.很多网站的图片上传功能都会对图片的大小进行限制,尤其是头像上传,限制5M或者2M以内是非常常见的.然后现在的数码设备拍摄功能都非常出众,一张原始图片超过2M几乎是标配,此时如果用户想把手机或相机中的某个得意图片上传作为自己的头像,就会遇

使用servlet3.0提供的API来进行文件的上传操作

servlet 3.0针对文件上传做了一些优化,提供了一些更加人性化的API可以直接在request中的到文件的名称.文件size,MIME类型,以及用InputStream表示的文件流的信息 @RequestMapping(value = "/add", method = RequestMethod.POST) @ResponseBody public String addFile(HttpServletRequest request) throws IOException, Ser