클라이언트단에서 이미지 리사이징을 하는 것의 단점(?)

클라이언트단에서 이미지 리사이징을 하는 것의 단점(?)

QA

클라이언트단에서 이미지 리사이징을 하는 것의 단점(?)

본문

안녕하세요?

이미지 리사이징을 서버가 아닌 클라이언트에서 하는 것과 관련하여 질문 드립니다 ^^

 

유저가 일정 사이즈를 초과하는 이미지를 업로드하는 경우

다수의 사이트에서 자동으로 리사이징을 하도록 하고 있습니다.

대체로 PHP의 GD 라이브러리나 Python의 Pillow 등을 이용하는 것으로 알고 있는데요 :)

 

제가 막연히 생각하기로는 canvas API를 활용하여

브라우저에서 미리 리사이징을 한 후에 이를 업로드한다면,

1. 서버의 자원을 절감할 수 있고

2. 모바일 유저의 경우 아웃바운드 트래픽을 경감할 수 있다는 장점이 있을 것으로 같네요 ^^

 

간단히 테스트를 해보면 백엔드에서 처리하는 것과 비교하여 

체감상 속도 저하 같은 문제를 느끼지 못하겠던데요.

(물론 굉장히 주관적이고 테스트한 환경도 다양하지 못하기 때문에 일반화할 수 없지만요 ㅠㅠ)

클라이언트단에서 리사이징을 하면 어떠한 단점 내지 한계가 있기 때문에

주로 백엔드에서 이를 처리하는걸까요??

 

구글링을 해보니 대체로 브라우저에서는 bilinear interpolation을 사용하는 것으로 확인되는데

백엔드에서 bicubic 또는 lanczos interpolation을 사용하는 것과 비교할 때 

분명히 화질의 저하가 있을 것 같긴 하네요 ㅠㅠ

 

그리고 아마도 제가 미처 생각하지 못한 부분이 추가적으로 있을 것 같은데요 :)

이와 관련해서 저의 우문에 현답을 부탁드릴게요!

그럼 안녕히 주무세요~ ^-^

이 질문에 댓글 쓰기 :

답변 2

별다른 이유 없습니다.

php 에서 리사이징하는 것에 이미 익숙해져서 그런 것이죠.

거기에 비해 클라쪽에서 리사이징하는 건 비교적 최근에 나온 것이라 기존에 쓰던 방식과 큰 차이가 없으면 손에 익은 것을 사용하는 것이 편하거든요.

대표적인 것이 웹스토리지가 훨씬 편한데도 예전 쿠키나 세션방식을 그대로 쓰고 있고 그리드나 플렉스로 레이아웃 잡는 것이 더 효율적인 데도 float left 와 clear both 로 레이아웃을 잡는 분들이 많은 이유는 그걸 못하기 때문이 아니라 손에 익은 방식을 더 선호하기 때문에 그렇습니다.

운전을 예로 들면 새로 생긴 모르는 길로 가면 멏분정도 빨리 갈 수 있음에도 불구하고 시간이 더 걸려도 네비없이 갈 수 있는 내가 아주 잘 아는 익숙한 길로 운전하는 걸 많은 분들이 선호하잖아요.

어느 분야나 가장 큰 선호도는 새로운 테크닉이나 속도에서의 효율성 뭐 이런 것 보다는 친숙함이 첫번째 선택지가 되거든요.

 

많은 분들이 그누식스가 나와야 한다고 하고 그 이유로 레거시한 깡코드를 탈피해야 한다고 하지만 저는 그게 그누의 장점이라고 봐요.

바둑 최고수가 되려면 인공지능 프로그램이 필요하고 월드컵을 우승하려면 최고감독과 체계적인 시스템이 필수겠지만 바둑과 축구는 프로기사와 국가대표만의 전유물이 아닙니다. 친구와 행복하게 만원빵 바둑을 두고 조기축구회에서 십만원빵의 즐겁게 놀이로 하는 축구에는 알파고도 히딩크도 필요없습니다.

그 세계를 지배하는 게 바로 인간의 냄새가 물씬거리는 구태의연이라고 평가받을 수 있는 친숙함이죠.

그누 역시 개발자만의 전유물이 아니라 오히려 한땀 한땀 코드를 배워가며 익히는 조기축구회 회원들이 숫자적으로는 훨씬 많을 거에요. 버전 업뎃한다고 하면 덜컥 가슴부터 내려앉는 순수함을 가진 아마추어의 눈높이를 소유한 그런 대다수의 분들이 그누의 주인들입니다.

 

아마 이미지 리사이징도 같은 맥락일 거에요.

즉 친숙함이 그 원인입니다.

비타주리 님 안녕하세요? ^-^
제가 고민했던 부분을 깔끔하게 정리해주셔서 감사합니다!
말씀하신대로 친숙함의 측면도 있고, 이와 더불어 안정성의 측면도 있는 것 같네요 :)

제가 예전에 Dropbox API를 이용한 이미지 호스팅 보드스킨을 만들어봤는데,
아무래도 서버의 위치 때문에 로딩 속도에 한계가 있더군요.
이번에는 브라우저에서 이미지를 리사이징한 후 외부 서버에 저장하는 보드스킨과
Flask를 이용한 이미지 호스팅 백엔드(GIF -> MP4 변환)를 만들어보고 있습니다 ^^
아직 부족한 점이 많지만 저도 비타주리 님처럼 SIR에 뭔가 기여할 수 있으면 좋겠네요~

그럼 편안한 저녁 되시고, 일교차가 큰데 감기 조심하세요!
항상 감사드립니다 :)

https://developer.mozilla.org/ko/docs/WebAssembly

한번 검토해 보세요.

 

엑스엠엘 님 안녕하세요? ^^
웹어셈블리가 보편화되면 이를 이용하여 이미지 리사이징을 하라는 말씀이신거죠?
그나마 C언어를 조금 다룰 수 있으니 도전해보겠습니다!
그럼 좋은 저녁 되세요 :)

답변을 작성하시기 전에 로그인 해주세요.
전체 774
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT