![java圖片處理解決方案_第1頁](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a321.gif)
![java圖片處理解決方案_第2頁](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a322.gif)
![java圖片處理解決方案_第3頁](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a323.gif)
![java圖片處理解決方案_第4頁](http://file4.renrendoc.com/view/50aca1f083208d46a133d0d37e019a32/50aca1f083208d46a133d0d37e019a324.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
java圖?處理解決?案項(xiàng)?需要調(diào)整圖?服務(wù)器的解決?案,這次調(diào)整使?fastdfs存儲??件,也就是圖?,因?yàn)楝F(xiàn)在還沒有fastdfs的.net版的客服端,所以理所當(dāng)然把處理圖?放到了java這塊,使?java來處理圖?并且上傳到fastdfs上。之前還真沒?java整過圖?,因?yàn)?般沒這個需求,現(xiàn)在的需求是要根據(jù)前臺傳過來的尺?進(jìn)?圖?的縮略,?適應(yīng)縮放,留?,加?印操作。?開始我使?jdk?帶的?套圖?處理庫來處理圖?,也就是sun的JPEGCodec,測試發(fā)現(xiàn)它會把所有的圖?全部轉(zhuǎn)換成jpeg格式,也就是說把bmp,gif,png這種格式的圖?全部轉(zhuǎn)換成了jpeg格式,?且對于gif動畫圖?縮放就只能對第?幀縮放,所以對于gif這種的的縮放完之后就“不動了”。之后使?Graphics2D+ImageIO的?式,先判斷圖?的格式,然后縮放的時候強(qiáng)制的把圖?格式作為參數(shù)傳給ImageIO來處理,ImageIO.write(image,pic_type,out);但是對于gif動畫圖?縮放也只對第?幀縮放,所以對于gif這種的的縮放完之后也是“不動了”。最后在?上發(fā)現(xiàn)了?個架包--gif4j,它可以對gif動畫圖?進(jìn)?縮放但是對于加?印和留?操作就?能為?了。最后在做壓?測試時發(fā)現(xiàn),使?這種?式(java的jdk+gif4j),特別是對于?圖的操作,?圖我這邊測試的是6~7M的圖?,發(fā)現(xiàn)?常?常耗cpu和內(nèi)存,當(dāng)然程序已經(jīng)優(yōu)化過的前提下測試,圖?都以流的?式進(jìn)?操作。但是這種cpu和內(nèi)存的消耗簡直是開玩笑了,要是需要處理的圖??多,每秒過百的請求服務(wù)器就得卡死,?且這種?式處理的圖?質(zhì)量不是特別?。在這種?案放棄之后,發(fā)現(xiàn)了ImageMagick。ImageMagick(TM)是?個免費(fèi)的創(chuàng)建、編輯、合成圖?的軟件。它可以讀取、轉(zhuǎn)換、寫?多種格式的圖?。圖?切割、顏?替換、各種效果的應(yīng)?,圖?的旋轉(zhuǎn)、組利?Java的JNI(java本地調(diào)?),依賴操作系統(tǒng)提供的功能,操作批量、?圖?,這種?式效率?較?。然后當(dāng)然是開搞,ImageMagick在windows和linux下的配置稍有不同,詳細(xì)情況可以參考:/script/index.php下?貼出使?JMagick調(diào)?Imagemagick進(jìn)?縮略的代碼。publicvoidresize1(Stringsrc,Stringdsec,intwidth,intheight,intquality){ImageInfoinfo=null;MagickImageimage=null;DimensionimageDim=null;MagickImagescaled=null;try{info=newImageInfo(src);info.setQuality(quality);image=newMagickImage(info);imageDim=image.getDimension();intsrcW=imageDim.width;intsrcH=imageDim.height;int[]i=PicUtil.getWandH(srcW,srcH,width,height,1);scaled=image.scaleImage(i[0],i[1]);scaled.setFileName(dsec);scaled.writeImage(info);}catch(Exceptione){e.printStackTrace();}finally{if(scaled!=null){scaled.destroyImages();}if(image!=null){image.destroyImages();}}}這?注意,使?完之后要釋放資源。if(scaled!=null){scaled.destroyImages();}if(image!=null){image.destroyImages();}否則會很傷,你懂的。加?印代碼:publicvoidaddWater(Stringsrc,Stringsrc_biao,Stringdsrc,intposition,intquality){ImageInfoinfo=null;ImageInfologo_info=null;MagickImageimage=null;MagickImagelogo_image=null;DimensionimageDim=null;Dimensionlogo_imageDim=null;//MagickImagecompositeimage=null;try{info=newImageInfo(src);info.setQuality(quality);image=newMagickImage(info);imageDim=image.getDimension();logo_info=newImageInfo(src_biao);logo_image=newMagickImage(logo_info);logo_imageDim=logo_image.getDimension();int[]ii=WaterPosition.position(position,imageDim.width,logo_imageDim.width,imageDim.height,logo_imageDim.height);positeImage(CompositeOperator.AtopCompositeOp,logo_image,ii[0],ii[1]);image.setFileName(dsrc);image.writeImage(info);}catch(Exceptione){e.printStackTrace();}finally{if(logo_image!=null){logo_image.destroyImages();}if(image!=null){image.destroyImages();}}}代碼都整完之后,進(jìn)?壓?測試,問題出來了,java調(diào)?JNI的?式存在內(nèi)存隱患,?于原因,可以?上查查?,F(xiàn)在的情況就是如果可以10天半個?重啟下服務(wù),那沒問題,但是如果長時間的跑著服務(wù),它會把內(nèi)存耗盡,然后死掉。很郁悶,是吧,我也很郁悶。但我想做就做個NB點(diǎn)的吧,然后發(fā)現(xiàn)了GraphicsMagick+im4java這種?式。具體的不介紹了,?上資料很少,例?代碼更少,我在這?貼?段,僅供參考??s放代碼:publicvoidresize1(Stringsrc,Stringdsec,into_width,into_heigh,intwidth,intheight,doublequality){int[]i=PicUtil.getWandH(o_width,o_heigh,width,height,1);ConvertCmdcmd=newConvertCmd(true);IMOperationop=newIMOperation();op.addImage(src);op.scale(i[0],i[1]);op.quality(quality);op.addImage(dsec);try{cmd.run(op);}catch(Exceptione){log.error(e,e);}}加??。簆ublicvoidaddWater(Stringsrc,Stringsrc_biao,Stringdsrc,intposition,doublequality){CompositeCmdcmd=newCompositeCmd(true);IMOperationop=newIMOperation();op.gravity(WaterPosit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年聲學(xué)懸浮物監(jiān)測儀合作協(xié)議書
- 2025年基礎(chǔ)機(jī)械:液壓件合作協(xié)議書
- 2025年沼氣集中供氣系統(tǒng)合作協(xié)議書
- 2025年產(chǎn)品特許經(jīng)營合同常用版(4篇)
- 2025年二手房東房屋租賃合同標(biāo)準(zhǔn)版本(4篇)
- 2025年九年級音樂教師工作總結(jié)第二學(xué)期(二篇)
- 2025年買賣房產(chǎn)合同標(biāo)準(zhǔn)版本(2篇)
- 2025年個人房屋租賃合同協(xié)議參考樣本(三篇)
- 2025年臨時勞動協(xié)議標(biāo)準(zhǔn)范文(2篇)
- 2025年企業(yè)勞動員工勞動合同模板(2篇)
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 五年級上冊脫式計(jì)算100題及答案
- 人教版九年級英語動詞時態(tài)專項(xiàng)練習(xí)(含答案和解析)
- 蘭州市規(guī)范醫(yī)療服務(wù)價格項(xiàng)目基準(zhǔn)價格表
- 2006年度銀行業(yè)金融機(jī)構(gòu)信息科技風(fēng)險評價審計(jì)要點(diǎn)
- 火災(zāi)隱患整改登記表
- 普通地質(zhì)學(xué)教材
- 2022年全國高考詩歌鑒賞試題-教學(xué)課件
- 天津華寧KTC101說明書
- 2023-2024學(xué)年浙江省杭州市小學(xué)語文六年級上冊期末深度自測試題
- 縣道及以上公路保潔考核檢查評分表
評論
0/150
提交評論