簡體   English   中英

如何旋轉圖像並從JSP / Servlet頁面保存

[英]How rotate image and save it from JSP/Servlet page

我能夠成功使用JQueryRotate在JSP頁面中旋轉圖像。 但是,用戶現在希望具有保存旋轉圖像的功能。

但是從我到目前為止收集的數據來看,似乎不可能在此客戶端進行操作。 因此,我可能必須重新開始。

是否可以對JSP / Servlet中渲染的圖像進行具有保存功能的旋轉圖像? 如果是,怎么辦?

編輯:順便說一句,HTML5是不可能的,因為我的要求是仍然支持IE9。

好吧,僅作總結。 使用非HTML5瀏覽器-無法將修改的內容保存在客戶端圖片上。 在現代瀏覽器中-您可以嘗試保存包含圖像的畫布。 另外,您可以跟蹤css的變換,並根據需要渲染變換后的圖像,但這是服務器端的內容,只會顯示旋轉的圖像,而不是保存它。 您可以做的另一件事是,當用戶要求保存操作時,將轉換后的圖像發送到服務器,使用服務器端的圖像處理軟件/庫旋轉/轉換圖像,然后將新圖像發送回客戶端。 這可能有效,例如php有一些圖像庫。 順便說一句,一些社交網站共享圖像,但是,我認為,當用戶上傳圖像並將其保存在服務器上時,所有的轉換(裁剪,剪切,調整大小,旋轉...)都在服務器上進行。 順便說一句,前一段時間(2),在J2EE應用程序中,由於用戶需求,我們不得不執行類似的操作-將在瀏覽器中呈現的圖像保存到客戶端計算機。 將嘗試挽救這個想法,如果有有趣的事情,將其發布。

編輯以下是我們之前為保存屏幕截圖而編寫的一些代碼:

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設置為要寫入的文件,然后將圖像文件發送回瀏覽器。 這種方法有一個缺點-如果進行滾動,則不會捕獲窗口外的parte(例如說“ scrolled out”)。 好吧,實際上它有很多缺點,但這就是我所擁有的,您可以進行一些研究。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM