web-dev-qa-db-ja.com

画像をコピーし、ファイル入力に貼り付けるときにパスを元に戻す方法は?

アドホックなバグレポートを顧客から受け取ることがありますが、それをオンラインのバグトラッカーに転送する必要があります。テキストには問題なく機能しますが、画像は面倒です。

Htmlページのファイル入力(またはテキスト入力)に画像を貼り付けると、ファイルが自動的にディスクに書き込まれるように、ドキュメント(Excelシートなど)から画像をコピーして貼り付けるソリューションを探しています。 (tmp dir)、およびファイル入力フィールドに書き込まれるパス。

この質問は クリップボードの画像をGmailメッセージに直接貼り付ける に関連していますが、ローカルプログラムのみを使用した解決策があるかどうかを尋ねたいと思います。すべてのオペレーティングシステムのソリューションに興味があります。

8

さて、これは私がしたことです。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace ClipSave
{
    class Program
    {
        [STAThread] public static void Main()
        {
            if (Clipboard.GetDataObject() != null)
            {
                IDataObject data = Clipboard.GetDataObject();

                if (data.GetDataPresent(DataFormats.Bitmap))
                {
                    Image image = (Image)data.GetData(DataFormats.Bitmap, true);
                    string file = System.Windows.Forms.Application.CommonAppDataPath + "\\ClipSaveImage.png";
                    image.Save(file, System.Drawing.Imaging.ImageFormat.Png);
                    Clipboard.SetText(file);

                }
                else
                    MessageBox.Show("Copy valid image first");
            }
            else
                MessageBox.Show("Copy image first");
        }
    }
}

それをEXEにコンパイルし、ホットキーCtrl + Shift + Cを使用してスタートアップメニューのショートカットを追加しました。次に、クリップボード内の現在の画像をファイルにコピーし、ファイルへのパスをクリップボードに入れます。

3

このAutoHotKeyスレッド スクリーンショットを撮るためのAutoHotKeyスクリプトがあります。これには、クリップボードをPNGに保存するための簡単な.Net1.1プログラムのソースが含まれています。他にもいくつか変更を加える必要があります。

  • image.pngよりも良い名前で画像を別のフォルダに保存します
  • 新しい画像へのパスをクリップボードにコピーします

AutoHotKeyクリップボードコマンド は、そのデータにアクセスする別の方法ですが、画像データを取得するプログラムは少し複雑になります。

2
Ed Brannin

私があなたの質問に答えるかどうかわからない。しかし、あなたはクリップマンを試すことができます。すべてをコピーして、1つずつ選択するまで脇に置いておくと便利です。 Clipman、ソースCNET

1
Jason

私はWindowsに精通していませんが、すべてのOSのソリューションを求められたので、このWebサイトの画像をコピーしてスクリプトを実行することにより、Mac OSX用のapplescriptソリューションをテストしました。

このAppleScriptは、画像がTIFF形式でクリップボードにあることを前提としています(これがExcelから出力されるかどうかをテストする必要がある場合があります)。クリップボードからファイルを作成し、一時ディレクトリに保存してから、パスをSafariの最前面のページで指定されたフィールド。

したがって、画像をコピーし、Safariページに切り替えて、スクリプトを実行します。 (スクリプトメニューから、サービスにしてショートカットを割り当てるか、 FastScripts を使用してapplescriptにショートカットを割り当てます。)

フォーム上の適切なフィールドを見つけるには、スクリプトを調整する必要があります。

repeat with i in clipboard info

  if TIFF picture is in i then

    -- grab the picture from the clipboard, set up a filename based on date
    set tp to the clipboard as TIFF picture
    set dt to current date
    set dtstr to (time of dt as string) & ".tiff"
    set pt to ((path to temporary items from user domain as string) & dtstr)
    set tf to open for access file pt with write permission

    -- save the file
    try
        write tp to tf
        close access tf
    on error
        close access tf
    end try

    -- put the path into the proper field in the web Browser
    tell application "Safari"
        activate

        -- adjust javascript as necessary
        -- currently inserts into Answer textarea of this superuser.com page for testing
        -- ie. make sure you've clicked "add answer" first
        set myJS to "document.getElementById('wmd-input').value = '" & pt & "'"

        -- document 1 is frontmost
        do JavaScript myJS in document 1
    end tell

    exit repeat
  end if
end repeat

編集:考慮事項:

  • パスには何もしません。デフォルトの区切り文字はコロンです。 POSIXパスが必要な場合があります。
  • Javascriptを変更してファイルアップロードjavascriptを実行することは可能ですか? (私はこれについての経験はありませんが、それは可能だと思います。)
  • Excelはapplescriptをサポートし、copy pictureコマンド。これを1つのステップで実行できる場合があります。画像を選択し、スクリプトを実行し、スクリプトをコピーして保存し、Webページを開いて、フォームに入力します。
0
ghoppe
  • 画像を右クリックして保存しますか?
  • 画像をフォルダにドラッグしますか?
  • Snipping Toolを使用して、そこから保存しますか?

これらの3つの方法を使用すると、ファイルを非常にすばやく保存できます。ファイルエクスプローラーは常に同じフォルダーに移動するため、ファイルをすばやく保存またはアップロードしても問題はありません...

直接クリップボード機能 以前に質問されて失敗しました

0
Tamara Wijsman