Тож я набридла цим роздратуванням і вирішила подолати.
Є дві частини:
- Крихітна утиліта, яку я написав, щоб зберегти зображення буфера обміну у файл .png
- AutoHotKey сценарій
Сценарій AutoHotKey перевіряє, чи Photoshop наразі активний, і якщо так, то перехоплює комбінацію клавіш Ctrl+ V, а потім запускає утиліту.
Якщо утиліта зберегла зображення до %TEMP%\clip.png, комбінація клавіш Shift+ Ctrl+ F12надсилається до Photoshop, який я відобразив у Photoshop Action, щоб розмістити clip.pngфайл у відкритому документі.
Якщо утиліта не зберегла зображення, стандартний комбінат клавіш Ctrl+ Vнадсилається до Photoshop і виконується стандартна паста.
Весь вихідний код доступний тут: https://github.com/SilverEzhik/ClipboardToPNG , а утиліту можна завантажити тут: https://github.com/SilverEzhik/ClipboardToPNG/releases
Щоб створити дію Photoshop, просто зробіть нову дію з комбінацією клавіш, відображеною на Shift + Ctrl + F12 (або змініть комбінацію у файлі сценарію), а потім під час запису перейдіть до File> Place Embedded...та вставте %TEMP%\clip.pngу поле імені файлу.
Вихідний код сценарію AHK наведено нижче - якщо ви раніше не використовували AutoHotKey, встановіть його, а потім збережіть код у filename.ahkфайл у тій самій директорії, що і утиліта ClipboardToPNG.exe, а потім просто запустіть його.
DoPhotoshopPaste() {
RunWait, %A_ScriptDir%\ClipboardToPNG.exe ; run utility, wait for it to complete
if (ErrorLevel == 0) { ; if error code is 0
SendEvent, +^{F12} ; press Shift+Ctrl+F12 to run the designated Photoshop action to paste
}
else {
SendEvent, ^v ; else, just perform a standard paste.
}
}
#IfWinActive ahk_exe Photoshop.exe ; only activate this hotkey when photoshop is active
^v::DoPhotoshopPaste()
#IfWinActive
.pngФайл або його растровий , поки він буде відкритий в редакторі / глядача? Якщо це файл, то Photoshop (повинен) мати змогу правильно відкрити файл, прозорість і все. Якщо це фактичні пікселі зображення, то це залежить від вихідної програми та чи вводить вона дані про прозорість у буфер обміну чи ні.