Ruby-VIPS 이미지 처리 라이브러리.사용법의 좋은 예가 있습니까?
-
13-12-2019 - |
문제
나는 이미지 처리를 완전히 새로운 것입니다. 나는 JPEG가 내부적으로 그리고 어떻게 작동하는지에 대해 알고 있습니다.
나는 간단한 조작을 수행하는 루비 코드의 어딘가를 찾을 수 있다면
- jpeg 파일을 엽니 다.
- 각 픽셀을 반복하고 FX Green에 색상을 설정하십시오.
- 다른 파일에 결과를 씁니다.
- ruby-vips는 gem : http : // libvips.blogspot.co.uk/2012/06/ruby-vips-launches.html 를
- 루비 -FFI 에 기초한 VIPS8에 대한 완전한 재 작성 완료
- 소스 코드 저장소는 다음과 같습니다. https://github.com/jcupitt/ruby-vips/
- 사용의 예 : https://github.com/jcupitt/ruby- vips / wiki / 예제
- VIPS 이미지 처리의 기본 개념 : https://github.com/ JCUPITT / RUBY-VIPS / WIKI / BASIC-CONCEPTS
- RUBY-VIPS RAILS ON REALL의 RUBY 용 CarriberWave 업 로더 플러그인 통합 : https://github.com/ ELTIARE / Carrierwave-VIPS
- Ruby-Vips는 Rails6 의 ActiveStorage의 공식 백엔드 중 하나입니다.
Ruby-VIPS Library를 사용하여이를 수행 할 수있는 방법에 특히 관심이 있습니다. https://github.com/ender672/ruby-vips
내 목표 - Ruby-Vips (감마 보정, 밝기, 색조, ...)를 사용하여 기본 이미지 처리 작업을 수행하는 방법을 배우려면
루비 - vips의 github 페이지에서 'hello world--like-like holy가 매우 감사 할 것입니다!
루비 vips에 대한 대안이있는 경우, 나는 그들에게도 감사 할 것입니다.
업데이트
이 질문을했기 때문에 많은 일이 일어났습니다 :
해결책
업데이트 루비 -vips이 답변이 작성되었으므로 조금 변경되었습니다. 나는 현재 (2018) 버전에 대해 그것을 개정했습니다.
은 LIBVIPS의 관리자 중 하나 인 이미지 처리 라이브러리가 루비 - VIPS가 랩립니다.
TIM의 Ruby-VIP 저장소는 잠시 동안 만지지 않았습니다. 나는 현재 libvips와 함께 작동하는 포크를 가지고있다 :
https://github.com/jcupitt/ruby-vips
여기에 몇 가지 예가 있습니다 :
https://github.com/jcupitt/ruby-vips/tree. / 마스터 / 예제
빨간색과 파란색 채널을 0으로 설정하고 그냥 두십시오. 녹색 이미지 r 및 b by를 곱합니다 Ruby-VIPS는 픽셀 상수를 나타내는 배열을 사용하므로 쓸 수 있습니다.
out = in * [0, 1, 0]
.
완전한 실행 가능 예제는 다음과 같습니다.
#!/usr/bin/ruby
require 'vips'
im = Vips::Image.new_from_file '/home/john/pics/theo.jpg'
im *= [0, 1, 0]
im.write_to_file 'x.jpg'
.
new_from_file
에 사용할 수있는 트릭이 있습니다. 이미지에서 간단한 상단 작업을 수행하거나 산술과 같이 이미지에서 간단한 상단 작업을 수행하거나 크기를 조정하면 순차적으로 액세스 할 필요가있는 Ruby-VIPS를 알 수 있습니다. 픽셀로 :
im = Vips::Image.new_from_file '/home/john/pics/theo.jpg', access: :sequential
.
이제 Ruby-Vips가 이미지를 스트리밍합니다. 그것은로드, 곱하기 및 저장 모두 병렬로 모든 저장을 실행하고 한 번에 메모리에서 몇 개의 픽셀의 스캔 라인을 유지하지 마십시오. 이것은 속도와 메모리 사용에 정말로 좋은 개선을 줄 수 있습니다.
이미지 감마를 변경하려면 다음과 같은 것을 시도 할 수 있습니다 :
im = im ** 0.5 * 255 / 255 ** 0.5
.
각 픽셀마다 3 번 콜로라도는 조금 느리게됩니다. 룩업 테이블을 만들고 pow ()를 실행 한 다음 이미지를 매핑하는 것이 훨씬 더 빠를 것입니다. 테이블을 통해 :
lut = Vips::Image.identity
lut = lut ** 0.5 * 255 /255 ** 0.5
im = im.maplut lut
.
질문이 있으시면 언제든지 Rubyvips 이슈 트래커에서 열 수 있습니다.
다른 팁
죄송합니다. ruby-vips,하지만 imageMagick 이미지 처리에 관해서는 고전입니다. rmagick ( 현재 repo 의 docs에서 많은 기능을 파생 할 수 있지만 세 자습서 웹에서 많은 예제뿐만 아니라 웹에서 많은 예제
루트에서 신호 처리의 형태 인 이미지 처리의 이론에 정말로 가고 싶다면 (이것은 이미지에 매우 유사한 알고리즘을 적용 할 수 있으므로 완전히 흥미롭고 보람을 느낄 수 있습니다. 오디오 / 비디오 신호,하지만 궁극적으로 수학 - 푸리에 변환에 매우 무거울 것입니다). 그런 다음 수학이 당신을 두려워하지 않으면 예약 곤잘레스와 숲 이이 분야의 명확한 참조라고 말할 것입니다. 비싸지 만, 당신이 시작하고 잘 시작하기 위해 거기에서 필요한 것입니다. 여기에 무료 전자 책에 대한 링크가있는 페이지도 지출없이 시작하고 싶다면 먼저 돈을 많이.