java導入excel圖片處理

直接看代碼吧,主要邏輯吧excel的圖片拿到 壓縮上傳獲取url

 // 將文件轉成XSSFWorkbook工作簿XSSFWorkbook wb = new XSSFWorkbook(uploadFile);// 獲取工作薄中第一個excel表格XSSFSheet sheet = wb.getSheetAt(0);// 核心:::獲取excel表格中所有圖片,處理圖片上傳到oss  key:行號-列號Map<String, List<String>> picturesMap = getPictures(sheet);public Map<String, List<String>> getPictures(XSSFSheet xssfSheet) throws IOException {Map<String, List<String>> maps = new LinkedHashMap<>();List<XSSFShape> list = xssfSheet.getDrawingPatriarch().getShapes();for (int i = 0; i < list.size(); i++) {XSSFPicture picture = (XSSFPicture) list.get(i);// 行號-列號XSSFClientAnchor xssfClientAnchor = (XSSFClientAnchor) picture.getAnchor();// 獲取圖片XSSFPictureData pdata = picture.getPictureData();byte[] data = pdata.getData();InputStream inputStream = new ByteArrayInputStream(data);byte[] scalePicLater = scalePics(inputStream,0.5,0.5);String url = ossFactory.build().upload(new ByteArrayInputStream(scalePicLater), IdUtil.objectId() + ".jpg");inputStream.close();// 行號-列號String key = xssfClientAnchor.getRow1() - 1 + "-" + xssfClientAnchor.getCol1();if (maps.containsKey(key)) {List<String> strUrl = maps.get(key);strUrl.add(url);maps.put(key, strUrl);} else {List<String> strUrl = new ArrayList<>();strUrl.add(url);maps.put(key, strUrl);}}return maps;}public static byte[] scalePics(InputStream inputStream, double accuracy,double scale) throws IOException {// 壓縮圖片并保存到臨時文件中File tempFile = File.createTempFile("thumbnail", ".jpg");Thumbnails.of(inputStream).scale(scale).outputQuality(accuracy).toFile(tempFile);// 讀取臨時文件的字節流設置到輸出流中InputStream tempInputStream = new FileInputStream(tempFile);byte[] buffer = new byte[tempInputStream.available()];tempInputStream.read(buffer);tempInputStream.close();// 刪除臨時文件tempFile.delete();// 下載到本地,// BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Code\\upload\\1.jpg"));// bos.write(buffer);// bos.close();return buffer;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42335.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

R語言APSIM模型進階應用與參數優化、批量模擬實踐技術

隨著數字農業和智慧農業的發展&#xff0c;基于過程的農業生產系統模型在模擬作物對氣候變化的響應與適應、農田管理優化、作物品種和株型篩選、農田固碳和溫室氣體排放等領域扮演著越來越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…

《論文閱讀14》FAST-LIO

一、論文 研究領域&#xff1a;激光雷達慣性測距框架論文&#xff1a;FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter IEEE Robotics and Automation Letters, 2021 香港大學火星實驗室 論文鏈接論文github 二、論文概…

LeetCode49.字母異味詞分組

我一開始的思路就是用1個hashmap<Integer,List<String>>,Integer存的的是字符串所有字母ASCLL值的和&#xff0c;List里面放異位字符串&#xff0c;但是不是異位的字符串的ascll值也可能相同比如acd和abe&#xff0c;所以這個hashmap只能降低一點時間復雜度我還是要…

Vue--》打造個性化醫療服務的醫院預約系統(六)

今天開始使用 vue3 + ts 搭建一個醫院預約系統的前臺頁面,因為文章會將項目的每一個地方代碼的書寫都會講解到,所以本項目會分成好幾篇文章進行講解,我會在最后一篇文章中會將項目代碼開源到我的GithHub上,大家可以自行去進行下載運行,希望本文章對有幫助的朋友們能多多關…

Web APIs 第六天

正則表達式介紹語法元字符修飾符 一.正則表達式介紹 ① 簡介 用來匹配字符串中字符組合的模式在JavaScript中&#xff0c;正則表達式也是對象通常用來查找&#xff0c;替換那些符合正則表達式的文本&#xff0c;許多語言都支持正則表達式 ② 使用場景 驗證表單&#xff1a…

算法通關村第4關【白銀】| 棧的經典算法問題

1.括號匹配問題 思路&#xff1a;將左括號壓入棧中&#xff0c;遍歷字符串&#xff0c;當遇到右括號就出棧&#xff0c;判斷是否是匹配的一對&#xff0c;不是就返回false&#xff08;因為按照順序所以當遇到右括號出棧一定要是匹配的&#xff09;。使用Map來簡化ifelse clas…

編寫一套工具庫并上傳NPM

你的 工具箱 開箱即可用的 directive\utils&#xff0c; 說明&#xff1a;vue3-directive-tools 是一個方便在 Vue 3 Ts 項目中快速使用的 directive、tool 的 npm 插件。它允許您輕松地在項目中添加多種功能&#xff0c;它采用 Ts 方式開發&#xff0c;與 Vue3 更加搭配 npm&…

系統架構設計師---2017年上午試題1答案詳解

2017年上午試題1答案詳解 某計算機系統采用5級流水線結構執行指令,設每條指令的執行由取指令(2?t)、分析指令(1?t)、取操作數(3?t)、運算(1?t)和寫回結果(2?t)組成,并分別用5個子部完成,該流水線的最大吞吐率為(1);若連續向流水線輸入10條指令,則該流水線的加速比為(…

問道管理:放量打拐什么意思?常見的放量打拐三種形態?

成交量一直是股票交易中比較重要的目標&#xff0c;那么&#xff0c;放量打拐是什么意思&#xff1f;常見的放量打拐三種形狀是什么&#xff1f;下面問道管理為我們預備了相關內容&#xff0c;以供參閱。 放量打拐什么意思&#xff1f; 放量是指股票成交量與前幾個交易日比較顯…

安裝和配置 Ansible

安裝和配置 Ansible 按照下方所述&#xff0c;在控制節點 control.area12.example.com 上安裝和配置 Ansible&#xff1a; 安裝所需的軟件包 創建名為 /home/curtis/ansible/inventory 的靜態清單文件&#xff0c;以滿足以下要求&#xff1a; node1 是 dev 主機組的成員 node2 …

openGauss學習筆記-43 openGauss 高級數據管理-事件觸發器

文章目錄 openGauss學習筆記-43 openGauss 高級數據管理-事件觸發器43.1 語法格式43.2 參數說明43.3 示例 openGauss學習筆記-43 openGauss 高級數據管理-事件觸發器 觸發器會在指定的ddl事件發生時自動執行函數。目前事件觸發器僅在PG兼容模式下可用。 43.1 語法格式 創建事…

獨家!網絡機頂盒哪個好?測評員深度對比盤點網絡機頂盒排名

網絡機頂盒稱得上是家家戶戶必備&#xff0c;每年我都會進行網絡機頂盒的測評&#xff0c;今年已經測評過十幾款了&#xff0c;后臺收到很多私信不知道網絡機頂盒哪個好&#xff0c;我本期整理了網絡機頂盒排名&#xff0c;大家在選購時可以參考&#xff1a; ◆泰捷WEBOX 60Pro…

測試開發面試心得

百度測試開發實習生面試心得&#xff1a; 電話面試&#xff1a; 面試官&#xff1a;首先做一下自我介紹吧 我&#xff1a;我是***&#xff0c;來自什么大學&#xff0c;現在大三&#xff0c;在學校期間擔任過部長&#xff0c;副主席等職務&#xff0c; 組織舉辦了很多比賽&…

Keepalived + Nginx 實現高可用

一、簡介 浮動IP、漂移IP地址又叫做VIP&#xff0c;也就是虛擬IP。 Keepalived 是一種高性能的服務器高可用或熱備解決方案。 Keepalived 可以用來防止服務器單點故障的發生&#xff0c;通過配合 Nginx 可以實現 web 前端服務的高可用。 Keepalived 以 VRRP 協議為實現基礎&a…

使用 spaCy 增強 NLP 管道

介紹 spaCy 是一個用于自然語言處理 (NLP) 的 Python 庫。SpaCy 的 NLP 管道是免費且開源的。開發人員使用它來創建信息提取和自然語言理解系統,例如 Cython。使用該工具進行生產,擁有簡潔且用戶友好的 API。 如果您處理大量文本,您會想了解更多相關信息。例如,它是關于什…

HOT99-下一個排列

leetcode原題鏈接&#xff1a;下一個排列 題目描述 整數數組的一個 排列 就是將其所有成員以序列或線性順序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下這些都可以視作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整數數組的 下一個排列 是指其…

【C++】模板template

&#x1f525;&#x1f525; 歡迎來到小林的博客&#xff01;&#xff01; ??????&#x1f6f0;?博客主頁&#xff1a;??林 子 ??????&#x1f6f0;?博客專欄&#xff1a;?? C ??????&#x1f6f0;?社區 :?? 進步學堂 ??????&#x1f6f0;?歡…

Django之定時任務--apscheduler

Django--定時任務apscheduler的使用 apscheduler定時任務的使用1、安裝包2、配置settings.py3、在manage.py的文件同級目錄下創建文件scheduler.py4、在項目的urls.py中調用這個定時計劃5、然后啟動項目 python manage.py runserver,在admin中查看就能看到你的定時任務及執行的…

機器學習算法之-邏輯回歸(1)

什么是回歸 回歸樹&#xff0c;隨機森林的回歸&#xff0c;無一例外他們都是區別于分類算法們&#xff0c;用來處理和預測連續型標簽的算法。然而邏輯回歸&#xff0c;是一種名為“回歸”的線性分類器&#xff0c;其本質是由線性回歸變化而來的&#xff0c;一種廣泛使用于分類問…

Vue 引入 Element-UI 組件庫

Element-UI 官網地址&#xff1a;https://element.eleme.cn/#/zh-CN 完整引入&#xff1a;會將全部組件打包到項目中&#xff0c;導致項目過大&#xff0c;首次加載時間過長。 下載 Element-UI 一、打開項目&#xff0c;安裝 Element-UI 組件庫。 使用命令&#xff1a; npm …