문제

우리는 대규모 웹 응용 프로그램에서 이미지 미디어 데이터베이스를 메인하고 있습니다. 고해상도 JPG는 크며 (> 15MB) 어떤 식 으로든 다운로드 할 수 있어서는 안됩니다. 이제 우리는 이미지의 세부 사항 (작물)에 클라이언트 (확대 된 기능)에 대한 액세스를 제공해야합니다. 클라이언트는 다운 스케일 버전의 이미지를보고 전체 스케일 모드 (100%)에서 볼 영역을 선택할 수 있어야합니다.

이것이 가장 성능있는 방식으로 어떻게 구현 될 수 있습니까 (트래픽 및 CPU 현명한)? 고해상도 이미지 파일이 보호되는 한 모든 솔루션에 개방되어 있습니다. 응용 프로그램은 C# 및 .NET Framework 3.5에서 개발되었습니다.

어떤 아이디어? 미리 감사드립니다!

도움이 되었습니까?

해결책

가장 먼저해야 할 일은 서버에 업로드하기 전에 이미지를 압축하고 워터 마크하는 것입니다. 그런 다음 사용자에게 제시하십시오. 이미지가 정적이므로 CPU 리소스가 가장 적습니다.

그런 다음 개인적으로 전체 크기 버전의 이미지를 자르고 압축 된 버전과 함께 올려 놓았습니다. 이런 식으로 클라이언트는 전체 고해상 버전의 작은 샘플과 함께 전체 이미지 (압축 및 워터 마크)를 볼 수 있습니다.

클라이언트가 적고 매우 비록 서버가 없으면 비행중인 이미지 조작을 피하고 싶을 것입니다.

다른 팁

저해하는 버전의 이미지를 브라우저에 제공하고 클라이언트 측 작물 UI를 Hava로 제공하여 선택을 자르고 하이 레스로 다시 보낼 수있는 서버로 요청을 보냅니다.

내가 아버지에게 말한 것처럼 (인터넷이 어떻게 작동하는지 이해하지 못함) 웹 페이지에서 볼 수 있다면 저장할 수 있습니다. 단지 그것을하는 방법에 대한 질문 일뿐입니다.

좋아하는 딥 줌의 Ajax 버전이 있습니다 - 드래곤 참조 :

http://livelabs.com/seadragon-ajax/gallery/

사용자에게는 저렴한 버전의 이미지가 제공됩니다. 그런 다음 원하는 부분을 확대 할 수 있습니다.

먼저 모든 전체 크기 이미지의 워터 마크 버전을 사전 렌더링하여 압축 파일 형식으로 저장하고 사전 렌더링 된 저 RES 버전으로 저장했습니다.

나는 브라우징을 위해 저 RES 이미지를 제공 할 것입니다. 그런 다음 사용자가 자르기를 설정할 수 있도록 워터 마킹 된 고해상도 이미지.

확인 시점에서 나는 비수장 이미지를 자르고 자른 이미지를 웹 서버로 전달하여 클라이언트에게 보낸 두 번째 전용 이미지 처리 서버가있을 것입니다.

즉, 잘린 부분을 농사로 만든 클라이언트 측 스크립트를 만들고 함께 뭉쳐서 비수장 이미지의 전체 크기 사본을 만들 수 있습니다.

어떤 식 으로든 다운로드 할 수 있어서는 안됩니다.

다음과 상충됩니다.

클라이언트는 다운 스케일 버전의 이미지를보고 전체 스케일 모드 (100%)에서 볼 영역을 선택할 수 있어야합니다.

... 시점에서 이미지의 모든 영역을 전체 RES로 볼 수있게하면 전체 이미지를 함께 꿰매어 줄 수 있습니다. 따라서 전체 크기 이미지를 사용할 수 있도록 효과적으로 (매우 불편한 경우) (매우 불편한 경우).

이 중 어느 것도 목표를 달성하는 데 도움이되지 않습니다.

내가하는 방식은 다운로드 할 이미지 영역을 선택하는 데 사용하기 위해 72dpi 워터 마크 사본을 제공하는 것입니다. 이것을 원본 if 스크린 부동산의 %로 확장 할 수 있습니다. 사용자에게 왼쪽 상단 및 오른쪽 하단 좌표를 선택하도록하십시오. 그런 다음 Imagemagick과 같은 것을 사용 하여이 영역을 원본 밖으로 복사하여 사용자에게 제공하십시오.

리소스를 절약 해야하는 경우 미리 정의 된 그리드에서 사용자를 다운로드 할 수 있으므로 그리드 코디서 14:11이 처음으로 선택되면 image_1411_crop.jpg가 파일 시스템에 기록되고 다음에 코드가 선택되면 존재하는 파일입니다.

편집하다: 다른 답변에 대한 의견 중 일부를 읽으십시오 ...

어떤 방식 으로든 생성 및 서버 사이드 캐싱에 관계없이 동일한 양의 대역폭과 트래픽을 사용하게됩니다. 300dpi JPEG는 방금 생성되었거나 파일 시스템에 앉아 있든 상관없이 300dpi JPEG입니다.

CPU 또는 디스크 공간을 보존 해야하는지 확인해야합니다. 백만 공연의 이미지가 있고 40 명의 사용자 만 있다면 CPU 히트를 감당할 수 있습니다. 40 개의 이미지와 백만 명의 사용자가 있다면 HDD로 가십시오.

나는 사용할 것이다 S3 저장 용. 두 개의 버킷 (공개 보호)을 만들고, 사용자가 다운로드하도록 승인 한 후에 보호 된 버킷의 이미지에 URL을 제공하십시오. S3 URL은 만료일로 편안하게 만들 수 있습니다.

15MB 이미지를 사용하면 스케일링/크롭 버전을 미리 미리 생성해야한다는 것을 알게 될 것입니다.

나는 원본 파일을 제외한 모든 종류의 워터 마크를 사용합니다. (Google지도와 같은)

편집 : 축소를위한 깊은 줌 추가

Silverlight를 확인하십시오 깊은 줌 자르기 및 축소 관리를 위해 (데모). 그들은 심지어 A가 있습니다 공익사업 잘린 이미지를 생성합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top