2012-02-19 1 views
0

저는 작은 가게 응용 프로그램을 만들었고 더 빠른 방법, 이미지 업로드 방법에 대해 생각하고 있습니다 - 4 가지 크기의 이미지가 필요합니다. 첫 번째 아이디어는 업로드에서부터 4 개의 미리보기 이미지를 만드는 것이 전부입니다. 아마도 가장 쉬운 방법 일지 모르지만 업로드를 통해 4 가지 크기를 만드는 데는 많은 시간이 걸릴 수 있습니다. 그게 내가 좋아하지 않아서 피하고 싶습니다. 그것.레일 3 - 섬네일을 더 만들거나 CSS로 크기를 조정하는 것이 더 낫습니까?

두 번째 아이디어는 이미지를 업로드하는 것입니다. 예를 들어 크기 300x300 크기로 순간적으로이 이미지의 상점 디스플레이 엄지 손가락이 필요할 때 HTML과 CSS에서 값 을 설정하십시오. style => '너비 : 165px;'.

당신은 그것에 대해 어떻게 생각하십니까? 가장 좋은 변종은 무엇입니까?

답변

0

나는이 질문이 레일과 관련이 없다고 생각하지만 좀 더 일반적인 질문이다.

일반적으로 이미지는 활용할 모든 크기로 만듭니다. 업로드 할 때 네 개의 크기를 만드는 것은 대개 시간이 많이 걸리지 않습니다 (이미지를 한 번 올린 다음이를 기반으로 서버 측에 필요한 이미지를 만드는 것을 말합니다). 사용자는 모두 가장 큰 크기의 이미지를 다운로드 한 다음 필요에 따라 즉석에서 크기를 조정할 수 있습니다. 일반적으로 이미지를 자주 업로드하는 것은 아닙니다. 다른 이미지를 생성하는 것은 야간에 실행되는 예약 된 작업으로 지연 될 수 있으므로 관리자 측의 사용자 환경에 영향을 미치지 않습니다.

어쨌든 가장 큰 이미지를 다운로드 할 때마다 사용자가 항상 캐시에 저장해야하는 경우 더 작은 크기로 필요할 때마다 CSS를 사용하여 크기를 조정하면 추가 오버 헤드가 발생하지 않습니다. 이 경우에는 가장 큰 크기를 사용하는 것이 좋을 것이라고 생각합니다. 일반적으로 대부분의 사용 사례에서 가장 큰 크기의 이미지를 사용하지 않아도됩니다.

0

업로드를 관리하려면 carrierwave gem을 사용하십시오. 여러 "버전"으로 보석을 구성하십시오.

이미지 처리는 성능 병목 현상이 아니지만 실제로는 환상적으로 처리하려면 delayed_job gem을 사용하여 처리를 비동기 적으로 처리해야합니다.

carrierwave를 구성 할 때 실제 프로세서도 설정해야합니다. 본격적인 rmagick을 사용하지만, 설치하는 것이 더 간단한 minimagick을 사용할 수 있습니다. 그것은 모두 carrierwave readme에 자세히 나와 있습니다. rmagick/imagemagick의 경우에는 here's a thread이 사용되었습니다.

또한 이미지는 일반적으로 브라우저에 의해 안정적으로 캐시되며, 요즘 브라우저는 이미지를 크기를 조정하는 괜찮은 일을합니다. 일반적으로 프로세서가 좋을수록 결과가 좋고 그 이유는 무엇입니까? 나는 rmagick을 사용한다.

사용자가 업로드를 위해 무엇을 선택해야 하는지를 결정할 수없는 한 가장 마지막으로 하나 이상의 이미지를 처리해야합니다. 예를 들어 압축률이 거의없는 거대한 8000 X 6000 픽셀 이미지를 업로드 할 수 있습니다. 당신은 통제력이 떨어져 있기 때문에 이미지를 제공하고 싶지 않을 것입니다. 일단 이미지 프로세싱을 설정하는 문제가 발생하면 다양한 디스플레이 컨텍스트에 맞게 출력 크기를 몇 가지 더 추가하는 것은 쉬운 일이 아닙니다.

관련 문제