1

これが可能かどうかはわかりませんが、エンドユーザーがボタンをクリックしてブラウザに表示されているものをキャプチャし、画像を一部として送信できるように、コントロール/オブジェクトをWebページに追加したいと思います。ウェブサイトのレビュープロセス。

ActiveXコントロールを考えていたのですが、フラッシュやシルバーライトを使用できればもっと良いでしょう。

提案をありがとう。

4

2 に答える 2

1

Windowsでは、Alt + PrintScreenを押して、現在のウィンドウをクリップボードにコピーできます。

FireFoxを使用できる場合は、ScrapBook+を確認することをお勧めします。

自動化されたプロセスが必要な場合は、SWTを試してください。このライブラリには、HTMLをロードして表示し、結果を画像にコピーするために使用できるブラウザコンポーネントがあります。問題は、ブラウザがドキュメントのレンダリングをいつ終了したかを知ることです。このコードフラグメントはあなたが始めるはずです:

public HTML2Png ()
{
    display = new Display();
    shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setSize(920, 700);
    shell.setLocation(10, 20);
    browser = new Browser(shell, SWT.NONE);

    browser.addProgressListener(new ProgressListener() {
        public void changed (ProgressEvent progressevent)
        {
        }

        public void completed (ProgressEvent progressevent)
        {
            boolean result = browser.execute("window.status=document.bgColor;");
            if (!result)
            {
                System.err.println("Executing script failed!");
                return;
            }

            System.out.println("Loading completed.");
            completed.set(true);
        }
    });
    browser.addPaintListener(new PaintListener() {
        public void paintControl (PaintEvent paintevent)
        {
            System.out.println(paintevent);
        }
    });
}

void createPNG (String url, String pngFile)
{
    System.out.println("Working on "+url);
    completed.set(false);

    shell.open();

    browser.setText("<html><body bgcolor=\"#FF00FF\"></body></html>");
    GC source = new GC (shell);
    int testColor = 0xFF00FF00;
    Image image = new Image (display, new Rectangle(0, 0, 1, 1));

    int i = 100;
    while (display.readAndDispatch() && i > 0)
    {
        source.copyArea(image, 0, 0);
        if (image.getImageData().getPixel(0,0) == testColor)
            break;
        sleep();
        i --;
    }

    if (i == 0)
        throw new RuntimeException("Loading took too long");

    completed.set(false);
    browser.setUrl(url);
    i = 50;
    while (!shell.isDisposed() && i > 0)
    {
        if (completed.get())
        {
            source.copyArea(image, 0, 0);
            if (image.getImageData().getPixel(0,0) != testColor)
            {
                image = new Image (display, browser.getClientArea());
                source.copyArea(image, 0, 0);

                //if (checkImage(image, testColor))
                    break;
            }

            i --;
        }

        while (display.readAndDispatch())
            ;

        sleep();
    }

    if (i == 0)
        throw new RuntimeException ("Loading timed out");

    ImageLoader io = new ImageLoader ();
    io.data = new ImageData[] { image.getImageData() };
    File f = new File (pngFile);
    io.save (f.getAbsolutePath(), SWT.IMAGE_PNG);

    System.out.println("Saved image "+f+", "+f.length()+" bytes");
}
于 2009-08-12T14:41:56.827 に答える
-1

Print Screenボタン?それ以外のことを適切に行うのはかなり難しいでしょう。

于 2009-08-12T14:42:56.840 に答える