2014-01-30 65 views
0

我能夠成功使用JQueryRotate在JSP頁面中旋轉圖像。 但是,用戶現在希望能夠保存旋轉的圖像。如何旋轉圖像並將其保存在JSP/Servlet頁面

但從目前爲止我所收集的信息來看,似乎無法做到這一點。所以我可能不得不重新從頭開始。

是否有可能通過保存JSP/Servlet中呈現的圖像來執行旋轉圖像?如果是,如何?

編輯:順便說一句,HTML5是不存在的問題,因爲我的要求是仍然支持IE9。

+0

你的意思是保存旋轉後在瀏覽器中呈現的圖像?作爲jpg或png或whatelse? –

+0

是的。將它保存爲PNG是好的。有任何想法嗎? –

+0

似乎是一個dup。 http://stackoverflow.com/q/16318629/3183018 – user3183018

回答

0

嗯,只是爲了su。。使用非HTML5瀏覽器 - 無法將修改保存在客戶端圖片上。在現代瀏覽器中 - 您可以嘗試保存包含圖像的畫布。您也可以跟蹤css轉換,並根據需要呈現轉換後的圖像,但這是服務器端,只顯示旋轉的圖像,而不是保存。你可以做的其他事情是當用戶要求保存操作時將變換後的圖像發送到服務器,使用服務器端的圖像操作軟件/庫旋轉/變換圖像並將新圖像發送回客戶端。這可以工作,例如PHP有一些圖像庫。順便說一句,一些社交網站共享圖像,但我認爲,所有的轉換(裁剪,剪切,調整大小,旋轉......)都是在服務器上進行的,當用戶上傳圖像並將其保存在服務器上時。順便說一句,前一段時間在J2EE應用程序中,由於用戶需求,我們不得不做這樣的事情 - 將瀏覽器中呈現的圖像保存到客戶端機器。將嘗試拯救這個想法,如果有什麼有趣的東西會發布。

EDITED 這裏是我們做了一個很久以前保存屏幕一些代碼捕獲:

import java.awt.AWTException; 
import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import java.io.OutputStream; 

import javax.imageio.ImageIO; 

public class Screenshot { 

    public Screenshot() { 
    } 

    public static void imageCapture(int left, int top, int width, int height, String outFileName, String imgFormat) { 
     if (!outFileName.toUpperCase().endsWith(imgFormat)) { 
      outFileName += "." + imgFormat; 
     } 
     try { 
      Robot robot = new Robot(); 
      BufferedImage bi = robot.createScreenCapture(new Rectangle(left, top, width, height)); 
      ImageIO.write(bi, imgFormat, new File(outFileName)); 
     } 
     catch (AWTException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void imageCapture(int left, int top, int width, int height, OutputStream outStream, String imgFormat) { 
     try { 
      Robot robot = new Robot(); 
      BufferedImage bi = robot.createScreenCapture(new Rectangle(left, top, width, height)); 
      ImageIO.write(bi, imgFormat, outStream); 
     } 
     catch (AWTException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

正如你看到的,我們使用java.awt中。將完整文件路徑或已經準備好的OutputStream設置爲要寫入的文件,然後將圖像文件發送回瀏覽器。這種方法有一個缺點 - 如果你有滾動,窗口外的單位(比如說「滾出」)將不會被捕獲。其實它有很多缺點,但這就是我所能做的,你可以做一些研究。希望這可以幫助。

相關問題