1

写真がクリップボードにコピーされたことを検出し、それが発生したときに次のことを実行する方法を誰かが知っているかどうか疑問に思っていました:

  • この画像を GIF/PNG に変換します
  • 次に、この圧縮された画像をクリップボードに戻します

私が尋ねている理由は、ユーザーにスクリーンショットをコピーして貼り付け、Lotus に貼り付けることがよくあるからです。何らかの理由で、Lotus に画像を直接貼り付けると、ペイントに貼り付けて GIF として保存し、GIF からコピーして Lotus に貼り付けるよりも大きなメールが作成されます。

クリップボードはピクセル自体を保存するのではなく、文字通り、取得したデータの形式を知っているオブジェクトだと思います。

私が間違っている場合は、お気軽に修正してください。

編集:

最初の回答を読んだ後、私の質問は次のとおりです。「画像がクリップボードにあるたびに、圧縮してクリップボードに戻すにはどうすればよいですか?」

4

3 に答える 3

1

これが Windows であると仮定すると、クリップボードは画像を非圧縮形式で保存します。GIF は圧縮された画像ファイル形式であるため、圧縮が行われるため、ファイルはそのように小さくなります。

于 2010-02-05T10:47:25.530 に答える
0

Lotus Notesソリューションのみを探している場合は、実行しているLotus Notesのバージョンに応じて、「ドキュメントに貼り付けられた画像を圧縮する」が優先されます。バージョン8.0で提供されたと思いますが、間違っている可能性がありますそれを除けば、私はあなたが何を使うことができるか知りません。

スクリーンショットをドラフトメールに貼り付けるテストを行ったところ、保存されたドラフトは124KBです。スクリーンショットをPaintに貼り付け、163KBのファイルであるGIFとして保存しました。

于 2010-02-05T21:20:14.363 に答える
0

同様の目的で、次の C# プログラムを使用します。クリップボードを PNG ファイルに保存します。次に、Gmail などにファイルをアップロードします。

class Clip2Png {
[System.STAThread]
public static void Main(string[] args) {
    if (args.Length != 1) {
        System.Console.WriteLine("Usage: clip2png filename");
        return;
    }

    System.Windows.Forms.IDataObject lData = System.Windows.Forms.Clipboard.GetDataObject();
    if (lData == null || !lData.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap)) {
        System.Console.WriteLine("No image in clipboard");
        return;
    }

    System.Drawing.Image image = (System.Drawing.Image)
            lData.GetData(System.Windows.Forms.DataFormats.Bitmap, true);
    image.Save(args[0], System.Drawing.Imaging.ImageFormat.Png);
}
}
于 2010-02-05T21:28:26.577 に答える