iShot--macOS上最好用的截图工具
Posted 掘墓人的小铲子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iShot--macOS上最好用的截图工具相关的知识,希望对你有一定的参考价值。
截图问题由于写文章配图的需要,经常要截图,截图效果的好坏自然也会影响到文章的观感,所以截图的工具也得挑顺手的才行,今天就来聊一下 Mac 上的截图软件。
首先说一下我写文章遇到的有关截图的两个问题,也可以说是痛点,能解决了这两个问题,那么就是顺手的好工具。
1、边角问题最早一直用的是微信自带的截图,挺方便的,截图质量好,带标记,基本满足了截图的需求。但是,前不久发现一个问题,由于 macOS 下的窗口是圆角的,如果窗口的颜色和截图时背景颜色不一致,可能会出现四个角颜色是背景色的问题,这么说还是有点绕,上个图说明一下。
仔细看上面的图,是不是发现下面两个角有点发“黑”?但其实,并不是发黑,而是我的桌面壁纸颜色,我把截图的场景还原一下,看下图。
也就是说,我的浏览器窗口四个角的颜色是我的桌面壁纸的颜色,我通过 Photoshop 放大截图,证明了四个角确实如此。
这个问题,我称之为「边角问题」,边角问题就在于,四个角的颜色既不是窗口截图本身的颜色,也不是透明色,导致观感上有点“出戏”。一开始的时候我还用 Photoshop 污点修复处理一下,可是每次这么整也不是办法啊。
2、边框问题还有一个问题就是边框的问题,简单说就是图片的颜色和文章的背景一样了,导致看不出来图片的边界,还是用图片说明问题吧。
看下面这张图,是不是找不到图片左下部分的边界在哪。
而下面这张,就可以看到图片的边界。
这个问题我称之为「边框问题」,倒不是什么大问题,但是看不到边界会感觉会很奇怪,很别扭。我总不能截完图了再用 Photoshop 给图片加个边框吧,那效率也太低了。
截图软件对比基于以上的两个问题,我找了 Mac 上几款有名气的截图软件做了对比测试。
1、系统macOS 系统自带的截图工具,窗口截图自带透明的边框,四个角肯定是透明的,并且整体的透明边框不能关闭,每次截完图还需要自己裁剪,很麻烦,也没解决边框问题。
使用习惯不够本地化,举个例子,圈选等操作很别扭,不能在截完图之后直接操作,还需要打开文件再进行操作。
2、微信文章最开始也说到了,微信截图不能去除边角问题,也不能解决边框问题。
3、QQQQ就很奇葩了,有时候能解决边角问题,也就是会将四个角设置为透明色,有时候就不行了,我没摸到规律,很迷,也不能解决边框问题。
4、截图腾讯出的截图软件,就叫「截图」。
窗口截图自带阴影边框,无法调节或删除,不能解决边角问题和边框问题。
5、XnipXnip 截图的边角虽然没有显示出背景颜色,但是它给四个角添加了白色,如果网页背景色是黑色,截图也是黑色,就会发现四个角是白色,很奇怪。
可以开启阴影,但是无法自定义阴影大小,不能解决边框问题。
滚动截图默认有水印,需要购买或订阅 Pro 版才能去除水印。
6、Snipast第一次运行 Snipast 提示要去设置里打开权限,给了权限重启软件之后就卡死了,重启了电脑才能正常运行,不知道是不是个例。
边角和边框都存在问题,而且设置过于复杂,感觉不是一个轻量级的截图工具。
7、iShot终于到了我们今天的主角--「iShot[1]」。
•边角问题完美解决,四个角都是透明的,不管是在黑色还是白色的网页下展示都不会有问题。•边框问题完美解决,添加 1 像素的阴影,即可显示出图片的边框。•支持屏幕录制,且可以导出为视频或 GIF。•支持滚动截图,无水印。•支持屏幕取色。•支持局部高亮。•设置简单。•免费。
再看一下 iShot 截图的观感,四个角颜色为透明且有边框:
iShot 偏好设置界面如下:
更多使用说明请查看:iShot 视频教学[2]
可以说,iShot 满足了我对截图软件的所有要求,甚至有超出预期的功能。一款好的软件大抵如此,不需要复杂的设置,但是能解决你的问题,用就是了!
以后写文章截图我应该只用 iShot 了。
后记标题改成「iShot-- 我认为 macOS 上最好用的截图工具」可能会更好,因为确实是“我认为”,每个人的需求不一样,我只是通过对比发现 iShot 确实解决了上述的两个问题,所以对我来说它就是最好的一款截图工具,我也只是将自己觉得好的软件推荐给大家。
另外,作者还有两个软件,也一并推荐一下。
•iRightMouse 超级右键[3]
支持鼠标右键新建文件、复制文件到指定目录等等功能,三步并作一步,快,无止境。
•自动切换输入法[4]
自动在不同的 APP 之间切换输入法、中英文,让您的文字输入行云流水,从此告别繁琐的手动切换输入法,大幅提高输入效率。
引用链接
[1]
iShot: https://apps.apple.com/cn/app/ishot-%E6%88%AA%E5%9B%BE-%E9%95%BF%E6%88%AA%E5%9B%BE-%E6%A0%87%E6%B3%A8%E5%B7%A5%E5%85%B7/id1485844094?mt=12[2]
iShot 视频教学: https://www.better365.cn/ishottv.html[3]
iRightMouse 超级右键: https://apps.apple.com/cn/app/irightmouse-%E8%B6%85%E7%BA%A7%E5%8F%B3%E9%94%AE/id1497428978?mt=12[4]
自动切换输入法: https://apps.apple.com/cn/app/%E8%87%AA%E5%8A%A8%E5%88%87%E6%8D%A2%E8%BE%93%E5%85%A5%E6%B3%95/id1470350547?mt=12
最好用的取色器,颜色转换器
你有没有遇到过这样的情况,浏览网页或者浏览图片或者工作中,突然看到一个颜色,特别想拿到这个RGB颜色或者16进制颜色。(然后解决的方法就是截图存下来,拿到PS里去查看颜色。)
你还有没有遇到过这样的情况,只有一个RGB颜色或者16进制颜色,却无法转换。(然后解决的方法就是截图存下来,拿到PS里去转换颜色。)
所以今天花了点时间做了一款小工具。虽然很小但却很好用,大小仅有39kb。但是代码却很强大,甚至会被杀软误报(由于使用了键盘钩子,完全无毒请放心使用)。
(一)颜色拾取
引用系统API
/// <summary> /// 获取指定窗口的设备场景 /// </summary> /// <param name="hwnd">将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC</param> /// <returns>指定窗口的设备场景句柄,出错则为0</returns> [DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hwnd); /// <summary> /// 释放由调用GetDC函数获取的指定设备场景 /// </summary> /// <param name="hwnd">要释放的设备场景相关的窗口句柄</param> /// <param name="hdc">要释放的设备场景句柄</param> /// <returns>执行成功为1,否则为0</returns> [DllImport("user32.dll")] public static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc); /// <summary> /// 在指定的设备场景中取得一个像素的RGB值 /// </summary> /// <param name="hdc">一个设备场景的句柄</param> /// <param name="nXPos">逻辑坐标中要检查的横坐标</param> /// <param name="nYPos">逻辑坐标中要检查的纵坐标</param> /// <returns>指定点的颜色</returns> [DllImport("gdi32.dll")] public static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);
不知道为何用下面的引用就是获取不到颜色,一直返回-1
private static extern int GetPixel(IntPtr hdc, Point p);
调用方法如下
public Color GetColor(int x, int y) { IntPtr hdc = GetDC(IntPtr.Zero); uint pixel = GetPixel(hdc, x, y); ReleaseDC(IntPtr.Zero, hdc); Color color = Color.FromArgb((int)(pixel & 0x000000FF), (int)(pixel & 0x0000FF00) >> 8, (int)(pixel & 0x00FF0000) >> 16); return color; }
效果如图
由于颜色拾取是根据鼠标位置来拾取的,那怎么把颜色锁住呢?这就需要键盘钩子了,需要监听鼠标按键,光程序内部的MouseClick是不行的,当窗体没有激活的时候也需要获取颜色。所以用到了键盘钩子,键盘钩子代码量太大就不发了,有兴趣的可以联系我。键盘钩子会被部分杀软报毒,原因是它可以监视鼠标和键盘,打密码也会被监视,这个就有点恐怖了。
(二)颜色转换
这个功能的代码就相对简单了。不管怎么转换只要能拿到Color就可以互相转换。代码如下:
RGB转Color
try { string rgbstr = txt_rbg1.Text.Replace(",", ","); int[] list = Array.ConvertAll<string, int>(rgbstr.Split(‘,‘), x => Convert.ToInt32(x)); if (list.Length == 3) { Color c = Color.FromArgb(list[0], list[1], list[2]); JConvert(c); } } catch { return;
16进制颜色转Color
try { Color c = System.Drawing.ColorTranslator.FromHtml(txt_color161.Text); JConvert(c); } catch { return; }
效果如图
最后放出链接
https://pan.baidu.com/s/1aiNgsIDnKLTx8nq1XtvOBA
以上是关于iShot--macOS上最好用的截图工具的主要内容,如果未能解决你的问题,请参考以下文章