2013-07-02 1 views
0

내가 레일 및 코딩에 새로 온 사람 전체를 재설정 할 필요없이 레일의 데이터베이스를 변경합니다, 그래서 이것은 아주 기본적인 질문 할 수있다 이미지 업 로더는 두 개의 서로 다른 크기의 이미지를 데이터베이스에 저장합니다. 하나는 페이지에 표시하기에 더 작고, 하나는 라이트 박스에서 사용하기 위해 더 큰 버전입니다 (컬러 박스).

내가 겪었던 문제는 개발 및 프로덕션 모두에서 데이터베이스에 이미 존재했던 사용자였습니다. 운좋게도 Faker gem을 사용하여이 사용자를 만들었습니다. 프로덕션에서는 제작 과정에서 어떻게 보이는지를 확인하기 위해 게시했습니다.

이미 데이터베이스에있는 이미지의 경우 더 작은 버전으로 저장되므로 라이트 박스에 깨진 이미지가 표시됩니다 (큰 버전이 없기 때문에).

나는 중요한 것을 잃지 않고 그렇게 할 수 있었기 때문에 데이터베이스를 리셋하고 개발할 때 Faker 갈퀴를 다시 실행했고, 프로덕션에서 백업에 서명하고 다시 내 사진 몇 장을 업로드했습니다. (나는 거의 절대적으로 긍정적인데 이것은 최선의 방법은 아니지만 ... 나는 단지 두 번째 달의 학습에 들어가고있다 ...)

내 질문은 이것이다 : 데이터베이스를 다시 할 수있는 방법이 있는가? 처음에 거기에 있던 이미지는 머물러 있고 두 버전 모두로 데이터베이스에 다시 저장됩니다.

또는 이미지의 한 버전 만 저장하면 라이트 박스/컬러 박스가 원본 크기 이미지를 조작하여 원하는 크기로 렌더링 할 수 있습니까? 예를 들어, 사용자가 이미지를 업로드 할 때 이미지가 더 큰 버전의 데이터베이스에 저장되고 "축소판"의 경우 이미지가 축소되어 원하는 크기로 축소됩니다. 페이지에 ??

http://desolate-waters-6166.herokuapp.com/

내가 다른 일을 시도하고에 일을하는 방법을 학습에 대한 내 자신의 샘플 애플리케이션 등이 응용 프로그램을 사용하고 있습니다 : 참고로

, 여기에 응용 프로그램의 Heroku가 배포에 대한 링크입니다 별로 결과가없는 것.

미리 감사드립니다. 추가 정보를 제공해야하는지 알려주세요. 이 앱에 github 저장소를 연결할 수도 있습니다.

답변

0

사이트는 꽤 멋지다. 귀하의 질문에 대답하기 위해 나는 모든 사용자의 이미지를 가져 와서 높은 품질로 변형시키는 쉬운 방법이나 가치있는 일이 없습니다. 고해상도 축소판에 대한 열을 추가하고 축소판을 앞으로 고해상도로 저장하는 것이 가장 좋은 방법이라고 생각합니다. 두 번째 질문에 대답하기 위해 믿습니다. 높은 품질의 이미지를 저장하면 축소하는 것이 품질을 손상시키지 않으며, 해상도의 크기를 초과하는 경우에만 적합합니다. 어쩌면 저품질 이미지를 저장하는 것을 중단하고 앞으로 고해상도 이미지를 저장하십시오.

+0

굉장 - 훌륭한 솔루션 인 것처럼 들리지만 나에게 의미가 있습니다. 이렇게 빨리 지시하고 응답 해 주셔서 감사합니다. – marcacyr

+0

오, 칭찬에 너무 감사드립니다 - 격려가 많이 도움이됩니다. – marcacyr

0

나는 carrierwave gem을 살펴볼 것을 제안합니다. 이미지 크기 조정을 위해 ImageMagick을 사용하고 이미지 위치를 데이터베이스에 저장합니다 (이미지 자체 대신). 이렇게하면 아마존의 S3와 같은 무료 위치에 이미지 파일을 저장할 수 있습니다. 또 하나의 장점은 매우 부드럽게 만들어지는 크기 버전 관리입니다.