Недавно у меня появился MacBook с дисплеем Retina, и все мои скриншоты (через ⌘ CMD+ ⇧ SHIFT+ 3или ⌘ CMD+ ⇧ SHIFT+ 4) в конечном итоге в два раза больше по сравнению с тем, как они выглядят на экране.
Например, вот скриншот логотипа Ask Different, сделанный ⌘⇧4на MacBook Pro с сетчаткой под управлением macOS 10.15.7:
Когда файл открывается локально в режиме предварительного просмотра или быстрого просмотра, он отображается в том же размере, что и логотип веб-сайта. Но при загрузке в Интернет он отображается в два раза больше.
Как я могу предотвратить это?
Вот наиболее удобное решение (взято с http://www.quora.com/How-can-I-get-my-retina-Mac-to-not-take-screenshots-that-are-too-big и изменено немного)
Используйте встроенный в OSX Automator для автоматического уменьшения размера снимков экрана после их создания.
Вот как я справляюсь с этим. Это запутанно, но работает и не прерывает мой захват экрана -> рабочий процесс вставки дико... Я просто делаю снимок экрана, вызываю рабочий процесс Альфреда, а затем вставляю.
CMD-CTRL-SHIFT-4
захватит часть экрана. Этот раздел копируется в буфер обмена OSX. Затем я запускаю скрипт в терминале, чтобы сохранить содержимое буфера обмена во временный файл, изменить размер наполовину (72 dpi — это половина от 144 dpi) и скопировать изображение обратно в буфер обмена. Это требует использования нескольких утилит - если кто-то знает, как сделать то же самое с помощью одной простой утилиты, пожалуйста, дайте мне знать.
Я запускаю этот скрипт от Альфреда, чтобы упростить доступ к:
#!/bin/bash
pngpaste /tmp/ss.png
width=$((`sips -g pixelWidth /tmp/ss.png | cut -s -d ':' -f 2 | cut -c 2-` / 2))
sips -Z $width /tmp/ss.png
impbcopy /tmp/ss.png
pngpaste
находится на github: https://github.com/jcsalterego/pngpaste . sips
поставляется с OS X. impbcopy
находится здесь: http://www.alecjacobson.com/weblog/?p=3816
У LifeHacker была статья о sips http://lifehacker.com/5962420/batch-resize-images-quickly-in-the-os-x-terminal , на которую я ссылался, а также на эту суть: gist.github.com/lanceli. /4966207.
Для Альфреда я только что создал рабочий процесс, который запускает это как сценарий bash:
/Users/yourusername/bin/shrink_clipboard > /dev/null 2&>1
/usr/bin/sips -s dpiHeight 72.0 -s dpiWidth 72.0 /tmp/ss.png
screencapture -ioW $SCREENSHOT && pngquant -f --ext .png --skip-if-larger $SCREENSHOT && impbcopy $SCREENSHOT
Два обходных пути:
Если у вас внешний монитор не Retina, перетащите туда окно приложения и сделайте снимок экрана. Это то, что я делаю большую часть времени.
Это работает только в браузерах. Нажмите пару раз ⌘CMD+ , чтобы уменьшить шрифт до 50%, а затем скрин.-
Например:
Очевидно, макет может немного измениться, но это может быть хорошо в зависимости от ваших потребностей.
Лучше всего использовать стороннюю утилиту, например RetinaCapture .
Это довольно громоздко в использовании, но дает вам то, что вы ищете, и предоставляет возможность одновременного создания снимков экрана в 1x и 2x, что полезно, если вы создаете веб-сайт:
Я ожидаю, что где-то есть настройка для этого ( com.apple.screencapture
кажется лучшим кандидатом); но я не могу найти его.
Я использовал гибрид ответов Дэна Ки и Джастина Паркера и создал рабочий процесс Automator, который выполнял сценарий bash.
Это создает копию исходного файла, а также принимает несколько входных данных. Просто экспортируйте как приложение, а затем перетащите в него что-либо, чтобы получить версию «без сетчатки» с разрешением 72ppi и разрешением в два раза меньше пикселя.
Баш-код:
for f in "$@"
do
width=$((`sips -g pixelWidth "$f" | cut -s -d ':' -f 2 | cut -c 2-` / 2))
sips -s dpiHeight 72.0 -s dpiWidth 72.0 -Z $width "$f"
done
-Z
опцию, sips
которая делает это: «Пересэмплировать изображение, чтобы высота и ширина не превышали указанный размер»?Если вы ищете простое одноразовое решение, вы можете изменить размер изображения в приложении Preview (взято отсюда ):
Кстати, вы также можете увидеть метаданные изображения (dpi, размер и т. д.) в приложении Preview, просто нажмите Tools > Show Inspector
(взято отсюда ).
Когда вы говорите, что ваши скриншоты «становятся» в два раза больше, я подозреваю, что вы отправляете их людям, которые просматривают их на дисплеях без сетчатки. Если это так, то этого и следовало ожидать — плотность пикселей на вашем дисплее выше, поэтому, когда они просматривают снимок экрана, сделанный с вашего компьютера, на своем, он будет казаться физически больше.
Одним из обходных путей для этого, если вы отправляете снимки экрана через OS X Mail, является установка для параметра «Размер изображения» для вложенных изображений значения «Большой» вместо «Фактический размер». Это уменьшит масштаб прикрепленного изображения, чтобы оно выглядело «нормальным» при просмотре на дисплее без сетчатки.
используйте следующий аддон для firefox
https://addons.mozilla.org/en-US/firefox/addon/screengrab-fix-версия/
Здесь есть несколько отличных ответов, но я хотел что-то более необязательное и менее автоматическое.
Я создал новую службу в Automator под названием « Создать версию без Retina» , которую можно вызвать, щелкнув правой кнопкой мыши любой файл изображения в Finder.
Вот как это используется:
1. Найдите изображение сетчатки.
2. Щелкните правой кнопкой мыши изображение сетчатки и найдите наш новый сервис внизу.
3. Генерируется изображение без Retina (масштаб 50%).
Изображение по умолчанию:
Изображение без сетчатки:
Это достаточно просто создать самостоятельно (чувак, Automator — скрытая и забытая жемчужина в MacOS), но вот рабочий процесс, который вы можете скачать и дважды щелкнуть, чтобы установить.
Monosnap может сделать это очень хорошо. Есть расширенная настройка «Уменьшить снимки Retina».
Он имеет аналогичный ярлык области захвата ⌥ Option+ ⌘ CMD+ 5, который копирует изображение в буфер обмена.
Помимо этого, он может делать гораздо больше, например, делать записи экрана и напрямую загружать снимки экрана в Интернет для удобного обмена.
Я использую действие папки и небольшой сценарий Perl. Это изменит имя файла исходного снимка экрана на более удобное и создаст вторую версию с уменьшенным разрешением. Моя настройка заключается в том, что у меня есть место, ~/Pictures/Screenshots
где заканчиваются файлы.
Вот шаги по его настройке. Конечно, вы должны создать вышеуказанную папку. Затем создайте файл .plist с содержимым, например
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>some.domain.renamescreenshots</string>
<key>ProgramArguments</key>
<array>
<string>/Users/you/Library/LaunchAgents/rename-screenshots.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/you/Desktop</string>
</array>
</dict>
</plist>
где you
должно быть ваше имя пользователя. И сохраните это как/Users/you/Library/LaunchAgents/some.domain.renamescreenshots.plist
Обратите внимание на WatchPaths
параметр, который указывает, где ОС будет отслеживать изменения. Здесь снимки экрана заканчиваются по умолчанию.
В той же папке вы создаете скрипт Perl, например
#! /usr/bin/perl
for my $f (</Users/you/Desktop/Bil*>) {
if ($f =~/Bil.*(\d{4})-(\d{2})-(\d{2}) um (\d{2})\.(\d{2})\.(\d{2})\.png/) {
$dest = "/Users/you/Pictures/Screenshots/pic$1$2$3$4$5$6";
$res = `file "$f"`;
$res =~ /.* (\d+) x (\d+),.*/;
$half = $1/2;
`mv "$f" $dest.png`;
`/usr/bin/sips -Z $half $dest.png -o $dest.2.png`;
}
}
который выполняет фактическое преобразование, и сохраните его как /Users/you/Library/LaunchAgents/rename-screenshots.sh
(как указано в .plist). Обратите внимание, что снова you
должны быть заменены. Также /Users/you/Desktop/Bil*
необходимо настроить источник. Поскольку это немецкий язык, они начинают с Bil
(и еще немного текста, включая формат даты ГГГГ-ММ-ДД плюс время после слова «гм», означающего в). Это будет отличаться для каждой страны, поэтому необходимо настроить путь/регулярное выражение. Затем имя файла назначения форматируется как picYYMMDDHHMMSS.png
. Наконец, sips
будет создана уменьшенная копия этого файла с суффиксом «2» для имени.
Чтобы начать все это, вам нужно зарегистрировать службу через
launchctl load /Users/you/Library/LaunchAgents/some.domain.renamescreenshots.plist
Это запустит сценарий, когда будет сделан снимок экрана. (unload отменит регистрацию службы, если она вам больше не нужна.)
Примечание . Вышеупомянутое может вызвать некоторые затруднения при установке. Я регулярно забываю, как и где его настроить. И .sh
это ерунда, как и должно быть .pl
, но это тоже история. Это просто работает. Первоначально (до этого ответа) у меня был скрипт только для переименования снимка экрана. Но меня раздражали раздутые снимки экрана, которые мне были нужны для StackOverflow. Поэтому я нашел это sips
здесь и включил его.
Исаак Пак