문제

나는 이미지 처리를 완전히 새로운 것입니다. 나는 JPEG가 내부적으로 그리고 어떻게 작동하는지에 대해 알고 있습니다.

나는 간단한 조작을 수행하는 루비 코드의 어딘가를 찾을 수 있다면

  1. jpeg 파일을 엽니 다.
  2. 각 픽셀을 반복하고 FX Green에 색상을 설정하십시오.
  3. 다른 파일에 결과를 씁니다.
  4. 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 이슈 트래커에서 열 수 있습니다.

https://github.com/jcupitt/ruby-vips/issues

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