트위터 사진, 저장하면 화질이 흐려지는 이유

트위터(엑스)에서 사진을 저장했는데 확대해 보면 뿌옇게 뭉개져 있던 경험, 다들 한 번쯤 있습니다. 이건 저장 방법이 잘못된 게 아니라, 화면에 보이는 사진 자체가 애초에 업로드 원본이 아니기 때문입니다. 원본 해상도는 사진 주소를 조금만 바꾸면 따로 받을 수 있고, 실제로 얼마나 차이가 나는지는 공식 계정이 올린 사진으로 직접 확인할 수 있습니다. 이 글에서는 왜 이런 차이가 생기는지, 그리고 원본을 어떻게 확인하는지를 순서대로 설명합니다.
요약 ① 타임라인·저장 버튼으로 받는 사진은 업로드 원본이 아니라 화면 표시용으로 줄어든 축소본입니다. ② 사진 주소 끝의 파라미터를 orig로 바꾸면 원본 해상도를 받을 수 있고, NASA 아르테미스 공식 계정 사진으로 실제 5568×3712 원본을 확인했습니다. ③ GIF·영상이 첨부된 트윗, 비공개 계정, 삭제된 글은 이 방법으로도 사진을 가져올 수 없습니다.
화면에서 보던 사진과 저장한 사진이 다르게 느껴지는 이유
트위터 타임라인에서 사진을 보고 저장 버튼을 누르거나 마우스 오른쪽 버튼으로 '이미지 저장'을 선택하는 건 누구나 하는 익숙한 동작입니다. 그런데 막상 저장한 파일을 열어보면 화면에서 보던 것과 뭔가 다르게 느껴지는 경우가 있습니다.
예를 들어 온라인 판매자가 참고용으로 트위터에서 상품 사진을 저장해 인쇄물이나 상세페이지에 크게 넣었더니 경계선이 계단처럼 깨져 보이는 경우가 있습니다. 화면에서는 멀쩡해 보였는데 확대하는 순간 문제가 드러난 겁니다.
좋아하는 아티스트나 스포츠 선수의 공식 계정에 올라온 사진을 배경화면으로 쓰려고 저장했는데, 모니터에 꽉 채우자 사진이 흐릿하게 늘어나 보이는 경우도 흔합니다. 파일 자체의 픽셀 수가 모니터 해상도보다 작아서 생기는 일입니다.
두 경우 모두 저장 방법이 틀린 게 아닙니다. 트위터가 화면에 띄우는 사진 자체가 업로드본보다 작게 압축된 버전이고, 저장 버튼은 바로 그 화면에 떠 있는 파일을 그대로 받아오기 때문에 생기는 일입니다.
스크린샷을 찍어 저장하는 방법도 마찬가지 결과를 낳습니다. 화면에 보이는 픽셀을 그대로 캡처하는 것이라, 원래 화면이 축소돼 있었다면 캡처본도 그만큼 작습니다. 오히려 화면 배율이나 브라우저 창 크기에 따라 결과물이 매번 달라지는 단점도 있습니다.
문제는 이 축소본과 원본을 눈으로 구분하기가 쉽지 않다는 점입니다. 웬만큼 확대하거나 인쇄하지 않는 이상 스마트폰이나 노트북 화면에서는 둘 다 비슷해 보입니다. 그래서 문제를 뒤늦게, 그것도 이미 다른 용도로 쓰려던 시점에 알아차리게 됩니다.
게다가 트위터 안에는 사진을 '저장'하는 경로가 여러 가지입니다. 앱의 공유 메뉴에 있는 저장 버튼, 브라우저의 우클릭 저장, 사진을 눌러 확대한 뒤 다시 저장하는 방법까지 제각각인데, 어느 경로를 쓰든 화면에 떠 있던 그 이미지 파일을 받아온다는 점은 똑같습니다. 경로를 바꿔본다고 원본이 나오지는 않습니다.
기사나 블로그 글에 트윗 사진을 인용해서 크게 배치할 때도 같은 문제가 반복됩니다. 스마트폰 화면에서 확인할 때는 표시 크기가 작아서 화질 차이가 잘 안 보이지만, PC 모니터나 프로젝터, 인쇄물처럼 큰 화면으로 옮기는 순간 압축 흔적이 그대로 드러납니다.
이런 일이 반복되는 근본적인 이유는 '저장했다'는 동작과 '원본을 받았다'는 결과가 같은 뜻이 아니기 때문입니다. 저장 버튼을 누르는 순간 사람들은 서버에 있는 파일 원본을 그대로 받는다고 생각하지만, 실제로는 지금 화면에 이미 떠 있는, 화면 표시에 맞춰 준비된 파일을 받는 것뿐입니다.
앱과 브라우저를 오가며 저장해 봐도 결과는 크게 달라지지 않습니다. 어느 경로든 최종적으로 화면에 렌더링된 그 파일을 내려받는 구조이기 때문에, 앱을 바꾸거나 브라우저를 바꿔서 시도해 봐도 흐림 문제 자체는 해결되지 않습니다.
커뮤니티나 단체 채팅방에 공유하려고 저장한 사진이 정작 확대해서 보면 뭉개져 있어 재차 물어보게 되는 경우도 있습니다. 원본을 못 구해서 그런가 싶어 다시 트위터에 들어가 봐도, 화면에 뜨는 사진은 여전히 처음 저장했던 그 축소본과 같은 파일입니다.
결국 화질 문제는 '어떻게 저장했느냐'가 아니라 '무엇을 저장했느냐'의 문제입니다. 저장 버튼의 위치나 앱의 종류를 바꿔봐도, 애초에 화면에 떠 있던 파일 자체가 축소본이면 결과도 축소본일 수밖에 없습니다.
졸업 앨범이나 추억 앨범처럼 나중에 인화해서 오래 보관하려는 목적으로 사진을 저장할 때도 이 문제가 발목을 잡습니다. 저장할 때는 몰랐다가, 몇 년 뒤 인화를 맡기는 시점에야 파일이 너무 작아 확대 인쇄가 어렵다는 걸 알게 되는 경우도 있습니다.
기업이나 단체 계정을 관리하는 담당자가 홍보 자료로 쓰려고 트위터에 올라온 사진을 저장하는 경우도 흔합니다. 배너나 카드뉴스처럼 사진을 다시 편집해서 쓰는 작업에서는 원본 해상도가 아니면 결과물 품질 자체가 떨어집니다.
게다가 저장한 사진을 다른 SNS에 다시 올리면, 그 앱이 업로드 과정에서 사진을 한 번 더 압축하는 경우도 있습니다. 이미 축소된 사진 위에 압축이 한 번 더 얹히면, 처음 트위터에서 저장했을 때보다 화질 저하가 눈에 띄게 커집니다.
스마트폰과 태블릿 화면 해상도가 높아지면서 이 차이는 예전보다 더 잘 보이게 됐습니다. 화면이 촘촘할수록 압축으로 뭉개진 경계선이나 색 얼룩이 도드라지기 때문에, 몇 년 전이라면 넘어갔을 흐림도 요즘 기기에서는 바로 눈에 띕니다.
참고로 사진뿐 아니라 영상도 화면 표시에 맞춰 최적화된 스트림이 먼저 재생되는 경우가 많습니다. 다만 영상은 이 글이 다루는 범위를 벗어나므로, 여기서는 사진에 한정해서 설명합니다.
화상회의나 발표 자료에 트윗 사진을 슬라이드로 크게 띄웠다가, 스크린에 투사하는 순간 픽셀이 도드라져 보이는 경우도 있습니다. 발표 도중에는 되돌릴 수도 없어 당황스러운 경험이 됩니다.
시간이 지나 계정이 사라지거나 트윗이 삭제된 뒤에야 '그때 원본으로 저장해 둘 걸' 하고 후회하는 경우도 있습니다. 한 번 삭제된 글은 이 방법으로도 되살릴 수 없기 때문에, 중요한 사진일수록 처음 저장할 때부터 원본인지 확인해 두는 습관이 중요합니다.
사진의 출처를 찾거나 역방향 이미지 검색에 쓰려는 경우에도 원본 해상도가 도움이 됩니다. 검색 엔진은 흐릿하고 작은 이미지보다 선명한 원본을 넣었을 때 더 정확한 결과를 찾아주는 경향이 있어서, 축소본만으로는 원하는 정보를 못 찾는 경우도 있습니다.
사진 주소를 직접 고쳐서 원본으로 받는 방법
트위터(엑스)가 화면에 사진을 띄울 때 쓰는 사진 주소 자체를 고쳐서 원본을 요청하는 방법이 있습니다. 도구 없이도 브라우저만으로 할 수 있는 방법입니다.
먼저 사진 위에서 마우스 오른쪽 버튼을 눌러 '이미지 주소 복사'를 선택합니다. 모바일 브라우저에서는 사진을 길게 눌러 같은 메뉴를 찾을 수 있습니다. 이렇게 복사되는 주소가 media_url_https라고 불리는, 사진이 저장된 실제 위치입니다.
브라우저에 따라 이 메뉴의 이름이 조금씩 다르게 표시되기도 합니다. 이름이 다르더라도 사진을 새 탭에서 단독으로 열어 그 상태에서 주소창의 주소를 확인하는 방법으로도 같은 결과를 얻을 수 있습니다. 핵심은 메뉴 이름이 아니라, 사진 파일 하나만 담긴 주소를 얻는 것입니다.
여기서 헷갈리기 쉬운 점이 하나 있습니다. 트윗 자체의 공유 링크와, 방금 복사한 사진 주소는 서로 다릅니다. 트윗 링크를 주소창에 붙여넣으면 트위터 페이지 전체가 열릴 뿐 사진 파일이 곧바로 열리지는 않습니다. 사진 파일을 열려면 반드시 사진 위에서 따로 복사한, 이미지 전용 도메인으로 시작하는 사진 주소를 써야 합니다. 두 주소를 혼동해서 트윗 링크에 파라미터를 붙여 봐야 원하는 결과가 나오지 않습니다.
트위터 화면 안에서 사진을 눌러 크게 띄우는 '확대보기'도 마찬가지입니다. 화면에 꽉 차게 커 보이지만, 그건 브라우저가 같은 압축본을 화면에 맞춰 확대해서 보여주는 것일 뿐, 실제 파일 해상도가 올라가는 게 아닙니다. 화면에서 크게 보인다고 원본은 아니라는 점을 여기서도 확인할 수 있습니다.
복사한 주소를 새 탭 주소창에 붙여넣으면 끝부분에 파일 확장자(.jpg 나 .png 등)가 붙어 있는 걸 볼 수 있습니다. 이 확장자 부분을 지우고, 그 자리에 물음표를 붙여 format=jpg&name=orig 라는 값을 추가합니다. format 뒤에는 원래 파일 형식에 맞춰 jpg 나 png 를 지정하면 됩니다.
이렇게 고친 주소로 다시 접속하면 브라우저에 훨씬 큰 사진이 열립니다. 이 상태에서 우클릭으로 저장하면 그게 업로드 원본입니다. name 뒤에 orig 가 아닌 다른 값이 붙어 있거나 아예 빠져 있으면, 트위터가 화면 표시용으로 압축한 축소본을 받게 됩니다.
정리하면 순서는 이렇습니다.
- 사진 위에서 마우스 오른쪽 버튼 → 이미지 주소 복사
- 새 탭 주소창에 붙여넣기
- 끝의 확장자를 지우고 물음표 뒤에 format=jpg&name=orig 붙이기
- 엔터를 눌러 다시 열린 사진을 우클릭으로 저장
이 방법에는 함정도 있습니다. 확장자를 지우는 위치를 정확히 찾지 못하거나 물음표 대신 다른 기호를 넣으면, 브라우저가 사진을 아예 열지 못하고 깨진 이미지 아이콘만 보여줍니다. 이럴 때는 주소를 처음부터 다시 복사해서, 확장자가 어디서 끝나는지부터 다시 확인하는 게 가장 빠릅니다.
저장한 뒤에는 파일을 열어 가로세로 픽셀 크기를 확인하는 습관을 들이면 좋습니다. 원본이라면 요즘 스마트폰 카메라로 찍은 사진처럼 가로 폭이 수천 픽셀대로 나옵니다. 반대로 저장한 파일이 여전히 수백 픽셀대라면, 어딘가에서 파라미터가 빠졌거나 잘못 붙은 것입니다.
저장하기 전에 미리 확인하고 싶다면, 열린 사진 위에서 마우스 오른쪽 버튼을 눌러 '검사'를 선택해 보는 방법도 있습니다. 개발자 도구 화면에 실제 파일 크기 정보가 표시되기도 합니다. 다만 이 메뉴 이름과 표시 방식은 브라우저마다 조금씩 달라, 처음 시도하는 사람에게는 다소 낯설 수 있습니다.
게다가 사진마다 손으로 문자열을 편집하는 작업이다 보니, 급하게 여러 장을 처리하다 보면 확장자를 다 못 지우거나 파라미터 철자를 틀리는 실수도 잦습니다. 그때마다 결과물이 압축본인지 원본인지 육안으로는 바로 구분되지 않아서, 나중에 다른 용도로 쓰려는 순간에야 잘못을 알아차리게 됩니다.
사진이 한 장이면 이 과정이 어렵지는 않습니다. 문제는 사진이 여러 장 붙은 트윗입니다. 트윗 하나에 사진이 네 장 붙어 있다면, 사진마다 주소를 복사하고 확장자를 지우고 파라미터를 붙이고 저장하는 과정을 네 번 반복해야 합니다. 스레드로 이어진 글이라면 이 작업이 트윗 개수만큼 더 늘어납니다.
모바일 환경에서는 이 작업이 한층 더 번거롭습니다. 주소창에 직접 붙여넣고 지우고 다시 붙여넣기를 여러 번 오가야 하고, 화면이 작아 확장자 자리를 정확히 지우기도 쉽지 않습니다. 사진마다 이 과정을 반복하느니, 주소만 붙여넣으면 원본과 ZIP 저장까지 한 번에 처리해 주는 쪽이 훨씬 빠릅니다.
무료 · 로그인 불필요 · 여러 장은 체크 후 ZIP으로 한 번에 원본 저장

왜 화면에 보이는 사진과 원본 파일 크기가 다른가
위 화면은 미국 항공우주국(NASA) 아르테미스 공식 계정이 아르테미스 II 임무 사진을 올린 트윗을, 이 도구로 그대로 분석한 결과입니다. 사진 네 장 전부가 5568×3712라는 동일한 해상도로 확인됐습니다. 타임라인에서 보던, 화면 크기에 맞춰 눌린 축소본과는 비교가 안 될 만큼 큰 크기입니다.
이 도구가 사진을 찾아내는 방식은 트위터가 직접 공개해 둔 신디케이션(발췌) API를 그대로 이용하는 것입니다. 신디케이션 API는 원래 다른 웹사이트가 트윗을 임베드해서 보여줄 때 쓰라고 만들어 둔 창구입니다. 이 API가 트윗 정보를 내려줄 때, 사진마다 media_url_https라는 필드에 사진이 저장된 주소가 함께 담겨 옵니다.
신디케이션 API는 원래 언론사 홈페이지나 블로그에서 트위터 로그인 없이도 공개된 트윗을 그대로 임베드해서 보여줄 수 있도록 트위터가 공개해 둔 창구입니다. 기사 안에 트윗이 카드 형태로 삽입돼 있는 걸 본 적이 있다면, 그 뒤에서 돌아가는 게 바로 이 API입니다. 이 도구는 같은 창구를 사진 주소를 뽑아내는 용도로 그대로 활용하는 것입니다.
화면 표시용 사진을 원본보다 작게 내려주는 이유 자체는 특별할 게 없습니다. 원본 그대로를 매번 전송하면 사진을 불러오는 데 시간이 더 걸리고 데이터도 더 많이 씁니다. 타임라인처럼 사진이 여러 장 한꺼번에 스크롤되는 화면에서는 특히 그렇습니다. 그래서 화면에 작게 보일 사진은 화면 크기에 맞춘 축소본으로 먼저 내려주고, 원본은 명시적으로 요청했을 때만 내려주는 구조를 쓰는 것입니다.
여기서 핵심은, 이 media_url_https 주소 자체는 화면 표시용 축소본이 아니라는 점입니다. 다만 주소 뒤에 아무 파라미터도 붙이지 않고 그대로 열면 트위터 서버가 기본값으로 압축된 버전을 내려줍니다. 주소 끝의 확장자를 떼어내고 그 자리에 format=jpg&name=orig 파라미터를 붙여야, 같은 주소인데도 서버가 원본 해상도로 응답합니다. 이 도구는 사진마다 이 파라미터를 붙이는 작업을 자동으로 처리해서, 주소만 넣으면 바로 원본이 나오게 만들어 줍니다.
사용자 입장에서는 사진 주소를 직접 다룰 필요조차 없습니다. 이 도구에 넣는 건 트윗의 공유 링크뿐이고, 그 링크를 신디케이션 API에 넘겨 사진 목록과 media_url_https 값들을 받아온 다음, 파라미터를 붙이는 작업까지 도구 안에서 전부 처리됩니다. 앞서 설명한 수작업 절차 전체가 화면 뒤에서 자동으로 돌아간다고 보면 됩니다.
이런 구조를 알아도 실제로 두 크기를 나란히 비교해 볼 일이 없으면 모르고 지나가기 쉽습니다. 화면에서 사진을 보는 것과 파일을 내려받는 것을 같은 행위로 여기기 때문에, 그동안 계속 축소본을 받아 왔다는 사실 자체를 눈치채지 못하는 경우가 많습니다. NASA 아르테미스 계정 사례처럼 직접 두 크기를 나란히 비교해 보면 그제서야 차이가 분명해집니다.
왜 하필 NASA 아르테미스 계정 사진으로 확인했는지도 이유가 있습니다. 공식 기관 계정이 올리는 임무 사진은 대체로 고해상도 원본으로 촬영되고, 삭제되거나 비공개로 전환될 위험도 낮아 반복해서 검증하기에 적합합니다. 실제로 트윗에 붙은 사진 네 장을 하나씩 열어봤을 때 전부 같은 5568×3712 해상도로 나왔다는 건, 이 계정이 원본을 그대로 업로드했고 이 도구가 그 원본을 빠짐없이 찾아냈다는 뜻입니다.
네 장 전부를 하나하나 열어 확인한 이유는, 트윗 안에서 사진마다 개별적으로 문제가 생길 수 있기 때문입니다. 예를 들어 사진 여러 장이 섞인 트윗에서 그중 한 장만 다른 시점에 다시 업로드됐거나 압축 설정이 달랐다면, 사진마다 결과가 달라질 수 있습니다. 이번 확인에서는 네 장 모두 같은 5568×3712로 나왔기 때문에, 이 계정이 사진 전체를 동일한 방식으로 업로드했다는 것도 함께 확인된 셈입니다.
이 파라미터 방식은 사진 형식이 jpg든 png든 동일하게 적용됩니다. 도구가 주소를 분석할 때 원본 파일 형식에 맞춰 파라미터를 붙이기 때문에, 사용자가 파일 형식까지 직접 신경 쓸 필요는 없습니다.
'orig'라는 값 이름 자체가 '오리지널(original)'의 줄임말입니다. 파라미터 이름에서도 알 수 있듯, 이 값은 처음부터 원본을 가리키는 용도로 설계돼 있습니다. 반대로 이 값이 없을 때 내려오는 사진은 화면 표시에 최적화된, 원본과는 별개의 파일로 봐야 합니다.
여러 장이 붙은 트윗 주소를 한 번만 넣어도 사진 목록 전체가 한꺼번에 나오는 것도 같은 구조 덕분입니다. 신디케이션 API에 트윗 하나에 대한 정보를 요청하면, 그 트윗에 달린 사진들의 media_url_https가 한 번에 모두 담겨 돌아옵니다. 사진마다 따로 요청을 보낼 필요 없이 목록을 한 번에 구성할 수 있는 구조라서, 체크박스를 눌러 고르는 동작 외에는 별다른 대기 시간이 들지 않습니다.
여러 장을 한 번에 받고 싶을 때는 목록에서 원하는 사진을 체크박스로 고른 뒤 ZIP 저장을 누르면 됩니다. 이때 만들어지는 ZIP 파일은 브라우저 안에서 그 자리에서 즉석으로 조립됩니다. 사진을 서버에 올렸다가 압축해서 다시 내려주는 방식이 아니라, 이미 각 사진을 원본 해상도로 받아 둔 상태에서 브라우저가 로컬에서 하나의 압축 파일로 묶어주는 방식입니다.
이 조립 과정은 별도 프로그램 설치 없이 브라우저에 내장된 기능만으로 처리됩니다. 사진을 하나씩 우클릭해서 저장하는 것과 비교하면 클릭 횟수 자체가 줄어드는 것은 물론이고, 골라낸 사진들이 도구 서버에 잠깐이라도 다시 올라갔다가 내려오는 과정 없이 바로 브라우저 안에서 파일로 묶인다는 점이 다릅니다.
이 ZIP은 무압축(store) 방식으로 만들어집니다. 사진 파일은 jpg나 png 자체가 이미 압축된 형식이라, 그 위에 zip 압축을 한 번 더 걸어도 용량이 거의 줄지 않습니다. 오히려 압축을 시도하느라 시간만 더 걸립니다. store 방식은 압축을 시도하지 않고 파일들을 원본 그대로 묶기만 하기 때문에, 사진을 여러 장 골라도 ZIP 파일이 곧바로 만들어집니다. 그리고 이 과정 전체가 브라우저 안에서 끝나기 때문에, 고른 사진이 별도의 서버 저장소에 남지 않습니다.
사진이 아니라 GIF나 영상이 붙은 트윗을 넣으면 이 도구는 'X(트위터) 영상 다운로드' 도구로 안내합니다. 사진과 영상은 트윗 데이터 안에서 아예 다른 형태로 담겨 있어서, 사진을 찾아 원본 주소를 조립하는 처리와 영상 스트림을 찾아 파일로 만드는 처리는 서로 다른 방식입니다. 그래서 한 도구가 둘 다 처리하지 않고 용도별로 나뉘어 있습니다.
사진과 영상이 이렇게 나뉘어 처리되는 데도 이유가 있습니다. 사진은 파일 하나로 완결되지만, 영상은 화질별로 나뉜 스트리밍 형식으로 제공되는 경우가 많아서 이를 내려받을 수 있는 하나의 영상 파일로 다시 묶어내는 과정이 따로 필요합니다. 그래서 사진 주소를 조립하는 이 도구의 처리 방식과, 영상을 다루는 도구의 처리 방식은 애초에 설계 자체가 다릅니다.
비공개(잠금) 계정의 사진이나 이미 삭제된 글은 이 방법으로도 가져올 수 없습니다. 신디케이션 API 자체가 공개된 트윗만 내려주도록 만들어져 있기 때문입니다. 계정이 잠겨 있거나 글이 지워진 상태라면 애초에 이 API가 사진 주소를 내려주지 않으므로, 원본이든 축소본이든 아무것도 받을 방법이 없습니다.
이건 이 도구만의 제약이 아닙니다. 같은 신디케이션 API를 쓰는 이상, 어떤 사진 저장 서비스를 쓰더라도 비공개 계정이나 삭제된 글의 사진은 가져올 수 없습니다. API 자체가 애초에 그 데이터를 내려주지 않기 때문에, 도구를 바꿔가며 시도해도 결과는 같습니다.
원본 해상도로 여러 장을 받으면 그만큼 파일 용량도 커집니다. 사진 한두 장은 큰 부담이 아니지만, 사진이 많이 붙은 트윗이나 스레드 전체를 통째로 원본으로 모으면 전체 저장 용량이 꽤 늘어날 수 있습니다. ZIP으로 묶어도 무압축 방식이라 용량 자체가 줄어들지는 않는다는 점은 앞서 설명한 그대로입니다.
정리하면 화질 차이의 근원은 하나입니다. 화면에 사진을 띄우는 주소와, 원본을 요청하는 주소가 사실은 같은 사진을 가리키는 같은 계열의 주소이고, 그 차이는 뒤에 붙는 파라미터 하나뿐이라는 것입니다. 이 사실을 알고 나면, '흐리게 나온다'는 현상이 트위터가 사진을 일부러 나쁘게 만들어서가 아니라, 화면 표시와 원본 보관을 애초에 다른 값으로 관리하고 있기 때문이라는 게 이해됩니다.
저장 방법별 화질·용량 비교
어떤 방법으로 저장하느냐에 따라 실제로 받는 파일이 달라집니다. 아래 표로 정리했습니다.
| 저장 방법 | 실제로 받는 파일 | 화질 | 여러 장 처리 |
|---|---|---|---|
| 화면에서 우클릭 → 이미지 저장 | 표시용 압축본 | 낮음(확대 시 흐림) | 한 장씩 |
| 화면을 캡처(스크린샷) | 화면에 보이던 크기 그대로 | 화면 배율에 좌우됨 | 한 장씩 |
| 앱 공유 메뉴의 저장 버튼 | 앱 설정에 따라 압축본인 경우가 많음 | 낮음~중간 | 한 장씩 |
| 브라우저 확장 프로그램 사용 | 프로그램마다 처리 방식이 다름 | 프로그램에 따라 다름 | 설치 필요 |
| 사진 주소를 orig 파라미터로 고쳐서 저장 | 업로드 원본 | 원본 | 사진마다 수작업 반복 |
| 이 도구로 낱장 저장 | 업로드 원본 | 원본 | 한 번에 한 장씩 클릭 |
| 이 도구로 여러 장 체크 후 ZIP 저장 | 선택한 사진 전부, 원본 해상도 무압축 묶음 | 원본 | 한 번에 일괄 |
표에서 보듯 '원본이냐 아니냐'를 가르는 기준은 저장 버튼의 종류가 아니라, 실제로 요청한 주소가 orig 파라미터를 달고 있었는지입니다. 버튼 이름이나 저장 경로는 결과에 영향을 주지 않습니다. 확장 프로그램처럼 내부 동작을 확인하기 어려운 방법은 결과가 프로그램마다 달라 일반화하기 어렵다는 점도 참고할 만합니다.
표를 다시 보면, 화질만 놓고 보면 원본을 받는 방법 세 가지(주소 직접 수정, 도구 낱장 저장, 도구 ZIP 저장)의 결과물은 똑같습니다. 차이는 화질이 아니라 사진이 여러 장일 때 손이 얼마나 가느냐, 그 하나뿐입니다.
자주 막히는 지점
도구를 쓰다가 막히는 지점은 대체로 정해져 있습니다.
| 증상 | 원인 | 해결 |
|---|---|---|
| 저장했는데도 여전히 흐릿하다 | 우클릭 저장이 화면 표시용 압축본을 그대로 받아온 것 | 사진 주소를 orig 파라미터로 바꿔 다시 받거나, 이 도구로 원본을 받는다 |
| 주소를 넣었는데 사진이 하나도 안 나온다 | 비공개(잠금) 계정이거나 이미 삭제된 글 | 공개 계정의 살아 있는 글만 가능하며, 다른 우회 방법은 없다 |
| 사진 대신 영상이나 GIF를 받고 싶은데 안 된다 | 이 도구는 사진 전용이라 영상·GIF는 처리하지 않는다 | 'X(트위터) 영상 다운로드' 도구를 이용한다 |
| 체크박스로 골랐는데 일부 사진이 ZIP에서 빠졌다 | 선택 과정에서 체크가 풀렸거나 빠졌다 | 전체 선택 후 목록을 다시 확인하고 ZIP 저장을 재시도한다 |
| ZIP 버튼을 눌렀는데 반응이 없다 | 선택한 사진이 하나도 없는 상태에서 버튼을 누름 | 최소 한 장 이상 체크한 뒤 ZIP 저장을 누른다 |
| ZIP 파일 용량이 생각보다 크다 | 무압축(store) 방식이라 원본 화질이 그대로 담긴다 | 정상 동작이며, 오히려 원본이 보장됐다는 뜻이다 |
| 트윗 주소를 넣었는데 사진 개수가 실제보다 적게 나온다 | 스레드로 이어진 다른 트윗의 사진까지는 포함되지 않는다 | 사진이 붙은 각 트윗의 주소를 따로 넣는다 |
| 주소를 넣었는데 사진이 하나도 안 뜬다(비공개·삭제는 아님) | 사진 없이 글자나 투표만 있는 트윗 | 사진이 실제로 첨부된 트윗 주소인지 다시 확인한다 |
정리하면 '흐림' 문제는 대부분 압축본을 받았기 때문이고, '안 나옴' 문제는 대부분 비공개·삭제 때문입니다. 둘은 원인이 완전히 달라서 같은 해결법으로는 풀리지 않습니다. 어느 쪽이든 먼저 트윗 주소가 살아 있고 계정이 공개 상태인지부터 확인하면 원인을 절반은 좁힐 수 있습니다.
저장한 사진, 마음대로 써도 될까
이 도구로 가져올 수 있는 건 공개된 트윗에 올라온 사진뿐입니다. 비공개 계정이나 삭제된 글의 사진은 애초에 접근 경로 자체가 없어서 가져올 방법이 없습니다.
그리고 원본 해상도로 받았다고 해서 그 사진의 저작권까지 넘어오는 건 아닙니다. 사진의 저작권은 여전히 처음 찍고 올린 사람에게 있습니다. 원본 파일을 받는 것과, 그 파일을 어디에 어떻게 써도 되는지는 완전히 다른 문제입니다.
본인이 직접 찍어 올린 사진을 다시 받거나, 개인적으로 소장하거나 배경화면처럼 혼자 보는 용도로 저장하는 정도는 대체로 문제가 되지 않습니다. 반면 다른 사람의 사진을 원저작자 표시 없이 자신의 것처럼 재업로드하거나, 허락 없이 상업적으로 쓰거나, 원본 그대로 다른 계정에 퍼 나르는 행위는 저작권 침해로 이어질 수 있습니다.
트윗을 그대로 인용해서 소개하는 것과, 사진 파일만 따로 떼어내 다른 곳에 올리는 것은 성격이 다릅니다. 원 게시물 링크나 작성자 표시 없이 사진만 옮겨 쓰면, 누가 처음 찍고 올린 사진인지가 지워지면서 저작권 문제가 더 커질 수 있습니다.
트윗을 캡처해서 화면째로 공유하는 것과, 사진 파일만 따로 저장해서 쓰는 것도 구분해야 합니다. 화면 캡처는 트윗의 작성자·날짜 같은 정보까지 함께 담고 있어 출처가 비교적 분명하게 드러나지만, 사진 파일만 떼어내면 그런 흔적이 사라진다는 점에서 재배포할 때 더 주의가 필요합니다.
특히 사진에서 워터마크나 계정 표시를 잘라내고 다시 올리는 행위는, 단순히 사진을 저장해 개인적으로 보관하는 것과는 전혀 다른 문제로 취급될 수 있습니다. 원본 해상도로 받았다는 사실 자체가 재배포를 허락받았다는 뜻은 아니라는 점을 기억해야 합니다.
공식 기관 계정이라고 해서 이 기준이 달라지지는 않습니다. 사진을 내려받기 전에 그 계정이 사진 사용에 대해 별도로 안내하는 문구가 있는지 확인하고, 없다면 개인적·비상업적 용도로 한정해 쓰는 편이 안전합니다.
본인이 직접 올린 트윗의 사진을 나중에 다시 받아 백업해 두는 용도라면 특별히 걸릴 게 없습니다. 반대로 타인의 계정에서 가져온 사진일수록, 저장 이후의 사용 범위를 더 보수적으로 잡는 편이 안전합니다.
이런 계정을 팔로우하는 팬 커뮤니티에서는 원본 사진을 개인 소장용으로 저장해 감상하거나 서로 화질을 비교하는 문화가 흔합니다. 이런 용도라면 문제될 게 적지만, 그 사진을 굿즈나 상품으로 제작해 판매하는 순간에는 완전히 다른 문제로 바뀝니다.
다른 저장 방법과 무엇이 다른가
트위터 사진을 원본으로 받는 방법을 검색하면 브라우저 확장 프로그램을 설치하라는 안내도 많이 나옵니다. 확장 프로그램은 브라우저에 추가 권한을 주는 방식이라, 설치와 업데이트를 계속 신경 써야 하고 브라우저를 바꾸면 다시 설치해야 합니다.
여러 SNS를 한꺼번에 지원한다는 범용 다운로더 사이트도 있습니다. 플랫폼을 가리지 않고 쓸 수 있다는 장점이 있지만, 사진 주소에 원본 파라미터를 붙이는 처리를 하지 않고 화면에 보이는 축소본 주소를 그대로 받아오는 경우도 있어, 정작 원본인지 아닌지는 받아본 뒤 파일 속성을 확인해야 알 수 있습니다. 여러 플랫폼을 동시에 지원하려다 보니 트위터 사진 특유의 파라미터 규칙까지는 세심하게 반영하지 못하는 경우가 생기는 것으로 보입니다.
스크린샷 앱이나 화면 캡처 기능은 설치가 필요 없고 어떤 화면이든 저장할 수 있다는 점에서 편리하지만, 앞서 설명했듯 화면에 보이던 픽셀 그대로를 담기 때문에 원본 파일의 실제 해상도와는 무관합니다. 아무리 화면을 확대해서 캡처해도 파일 자체의 픽셀 수가 늘어나지는 않습니다. 오히려 캡처 과정에서 화면 배율이나 기기 해상도가 섞여 들어가, 원본과는 다른 또 하나의 압축 단계가 추가되는 셈입니다.
트위터가 공식으로 제공하는 '트윗 임베드' 기능과도 다릅니다. 임베드는 다른 웹사이트에 트윗을 카드 형태로 그대로 박아 넣는 기능이라, 사진 파일 자체를 내 컴퓨터에 다운로드할 수 있는 기능이 아닙니다. 사진을 실제 파일로 갖고 싶다면 임베드가 아니라 이런 저장 절차가 필요합니다.
개발자 도구의 네트워크 탭을 열어 사진 주소를 직접 찾아내는 방법을 쓰는 사람도 있습니다. 원리는 앞서 설명한 주소 편집과 같지만, 이 방법을 알고 다룰 줄 아는 사람만 쓸 수 있다는 한계가 있습니다. 이 도구는 그 과정을 화면 버튼 몇 개로 옮겨 놓은 것에 가깝습니다.
모바일 앱에 내장된 '사진 저장' 기능과 비교해도 차이가 있습니다. 앱 내장 기능은 별도 설정 없이 바로 쓸 수 있지만, 화면 표시용 파일을 그대로 저장하는 구조라 원본 해상도를 보장하지 않습니다.
가입이나 결제를 요구하는 유사한 서비스도 있지만, 이 도구는 별도 가입이나 결제 없이 같은 기능을 무료로 제공합니다.
가장 간단한 방법은 원 게시자에게 직접 원본 파일을 요청하는 것이지만, 답을 받기까지 시간이 걸리거나 아예 답이 오지 않을 수 있습니다. 이 도구는 그런 과정 없이, 공개된 사진이라면 곧바로 원본을 확인할 수 있다는 점에서 실용적입니다.
이 도구는 설치 없이 주소만 넣으면 사진 전용으로 원본 파라미터를 자동으로 붙여 받아오고, 여러 장은 체크박스로 골라 ZIP까지 한 번에 만들어 준다는 점에서 위 방법들과 차이가 있습니다.
정리
- 트위터 타임라인과 저장 버튼이 주는 사진은 업로드 원본이 아니라 화면 표시용 축소본입니다.
- 사진 주소 끝의 확장자를 지우고 format=jpg&name=orig 파라미터를 붙이면 원본 해상도를 받을 수 있습니다.
- NASA 아르테미스 공식 계정 사진으로 확인한 결과, 원본은 네 장 전부 5568×3712였습니다.
- 여러 장은 체크박스로 골라 ZIP 하나로, 브라우저 안에서 무압축으로 즉석 저장할 수 있습니다.
- GIF·영상 첨부 트윗, 비공개 계정, 삭제된 글은 이 방법으로도 사진을 가져올 수 없습니다.
무료 · 로그인 불필요 · 여러 장은 체크 후 ZIP으로 한 번에 원본 저장
자주 묻는 질문
트위터 사진이 왜 이렇게 흐리게 저장되나요?
화면에 떠 있는 사진 자체가 업로드 원본이 아니라 트위터가 표시용으로 압축한 축소본이기 때문입니다. 우클릭 저장이나 앱의 저장 버튼은 그 화면에 떠 있는 파일을 그대로 받아오므로, 저장 방법을 바꿔도 결과는 같습니다. 원본을 받으려면 사진 주소 자체에 원본을 요청하는 파라미터를 붙여야 합니다. 이 구조는 트위터만의 특별한 정책이 아니라, 사진을 화면에 빠르게 띄우기 위해 웹에서 흔히 쓰이는 방식입니다.
우클릭으로 저장한 사진과 원본은 실제로 얼마나 다른가요?
사진마다 다르지만, NASA 아르테미스 공식 계정 사진을 분석했을 때는 원본이 5568×3712였습니다. 타임라인에서 보던 축소본은 화면 크기에 맞춰 훨씬 작게 줄어든 상태라, 확대하거나 인쇄용으로 쓰면 그 차이가 눈에 띄게 드러납니다. 사진마다 원본 해상도 자체가 다르므로, 다른 트윗의 사진을 저장할 때는 이 도구로 직접 확인해 보는 게 정확합니다.
사진 여러 장을 한 번에 원본으로 받을 수 있나요?
가능합니다. 목록에 나온 사진 중 원하는 것을 체크박스로 고른 뒤 ZIP 저장을 누르면 선택한 사진 전부가 원본 해상도 그대로 압축파일 하나에 담겨 내려옵니다. 이 압축파일은 브라우저 안에서 즉석으로 만들어지며 별도 서버에 저장되지 않습니다. 체크 해제도 자유롭게 할 수 있어 트윗에 붙은 사진 중 필요한 것만 골라 담을 수 있습니다.
비공개(잠금) 계정의 사진도 저장할 수 있나요?
불가능합니다. 사진 주소를 가져오는 API 자체가 공개된 트윗만 응답하도록 돼 있어서, 계정이 잠겨 있으면 이 방법으로도, 다른 어떤 방법으로도 사진을 가져올 경로가 없습니다. 삭제된 글도 마찬가지로 접근할 수 없습니다. 이는 정책이 아니라 데이터 접근 구조상의 제약이라, 앞으로도 우회할 방법을 기대하기는 어렵습니다.
GIF나 영상이 첨부된 트윗은 어떻게 저장하나요?
이 도구는 사진만 처리합니다. 트윗에 GIF나 영상이 붙어 있으면 사진을 찾는 처리 방식과 달라서 이 도구가 다루지 않고, 대신 'X(트위터) 영상 다운로드' 도구로 안내됩니다. 사진과 영상이 섞인 트윗이라면 도구를 나눠서 각각 저장해야 합니다. 다소 번거롭지만, 각 도구가 형식에 맞춰 더 정확하게 동작하도록 나눠둔 결과입니다.
원본으로 저장한 사진을 제 SNS에 다시 올려도 되나요?
원본 해상도로 받았다고 해서 저작권까지 넘어오는 건 아닙니다. 사진의 저작권은 처음 올린 사람에게 그대로 남습니다. 본인이 찍어 올린 사진이거나 개인적으로 소장하는 용도라면 문제가 적지만, 원저작자 표시 없이 재업로드하거나 상업적으로 쓰는 건 저작권 침해로 이어질 수 있습니다. 특히 워터마크나 계정 표시를 지우고 올리는 행위는 더 큰 문제가 될 수 있습니다.
저장한 사진이 진짜 원본인지 어떻게 확인하나요?
저장한 파일을 열어 사진 속성이나 정보 보기에서 가로세로 픽셀 크기를 확인하면 됩니다. 이 도구로 저장했다면 화면에 표시된 해상도(예: 5568×3712)와 실제 저장된 파일의 픽셀 크기가 같아야 정상입니다. 값이 다르다면 저장 과정에서 다른 경로로 압축된 것입니다. 윈도우는 파일 속성의 '자세히' 탭에서, macOS는 정보 가져오기 창에서 이 값을 확인할 수 있습니다.
