클립보드에서 붙여넣은 이미지에 확대/축소 요인을 자동으로 적용

HiDPI 디스플레이를 150% 확대 비율로 사용 중입니다. 스크린샷을 찍어서 Discourse에 붙여넣을 때마다 이미지가 너무 크게 보입니다. 보기 좋게 보이려면 수동으로 이미지에 확대/축소 비율을 적용해야 합니다.

110x110px 크기의 다음 박스에 대한 스크린샷을 만들었다고 가정해 보겠습니다.

그 스크린샷을(Ctrl+V) 작성기에 붙여넣으면 167x167px 크기의 이미지가 됩니다.


![image|167x167](upload://fWfpRZXtBMVBXjcMTAPOwtG5bND.png)

이상적으로는 제가 축소해야 할 정확한 비율(제 경우 66%)을 기억하지 않아도 정확한 크기의 이미지를 얻을 수 있어야 합니다.


![image|167x167, 66%](upload://fWfpRZXtBMVBXjcMTAPOwtG5bND.png)

이를 위한 2가지 옵션을 제안합니다. 확대 비율이 1이 아닌 경우:

  1. 이미지 마크다운에 올바른 확대 비율을 자동으로 추가합니다.
    ![image|167x167, 66%](...)

또는

  1. 미리보기 창의 이미지 도구 상자에 올바른 확대 비율을 추가합니다.
    image

확대 비율은 JavaScript로 계산할 수 있습니다:

Math.floor(100 / window.devicePixelRatio)
6개의 좋아요

정말 좋은 아이디어네요. 저도 항상 이 문제로 고생하고 있어요.

생각을 정리해 보면, 사용자가 스크린샷이 아닌 이미지를 복사/붙여넣을 경우 오탐(false positive)이 발생할까요?

또한 구현 방식에 대해, 1번과 2번을 동시에 할 수 없는 이유가 뭔지 모르겠어요.

4개의 좋아요

네, 스크린샷이 아닌 이미지를 붙여넣을 경우 오탐으로 처리됩니다. 스크린샷과 다른 이미지 중 어떤 것이 더 자주 삽입되는지 궁금하네요. :thinking:

1개의 좋아요

정확히는 모르겠고, 사용자와 업로드하는 사진의 종류에 따라 달라질 것 같아요. 가끔은 폰에서 이미지를 복사해서 데스크톱에 붙여넣기도 하니까, 그런 상황도 고려해야 해요.

어쨌든, 옵션 2로 시작하면 위양성 문제를 피할 수 있고, 미리보기에서 더 나은 기본 대안 크기를 제공할 수 있을 거예요.

1개의 좋아요

화면 캡처 도구가 PNG 파일에 DPI와 관련된 정보를 인코딩하는 것 같습니다. 예를 들어, 저의 고해상도 macOS 환경에서 촬영한 스크린샷을 https://www.metadata2go.com/ 에 업로드하면 다음과 같은 내용이 표시됩니다.

HiDpi를 꺼두면 해당 메타데이터 필드가 파일에서 사라지는 것처럼 보입니다.

@gerhard 님은 Windows에서 비슷한 현상을 확인하시나요? 그렇다면 JS로 이를 읽어 픽셀 밀도를 추정하는 방법이 있을지도 모릅니다.

아래 링크의 gist도 유용할 수 있을 것 같습니다.

2개의 좋아요

저도 원격 애니메이션 PNG가 애니메이션을 잃는 문제를 조사하고 있어, PNG의 첫 몇 바이트를 파싱하는 작업이 필요합니다. 따라서 이 부분에 대한 훅(hook)에 여러 가지 사용 사례가 있습니다.

2개의 좋아요

Linux에서 Spectacle를 사용 중인데 메타데이터에 아무것도 추가되지 않는 것 같습니다.

해당 gist의 코드는 Linux 시스템에서 150% 스케일 팩터로 생성한 스크린샷에 대해 false를 반환합니다. 해당 이미지의 pHYs 청크는 다음과 같습니다:

{ xDpu: 3780, yDpu: 3780, xDpi: 96, yDpi: 96, unit: 'meter' }
3개의 좋아요