2017-05-31 13 views
0

私はWandを使用しようとしましたが、輝度コントラストコマンドのマッピングを見つけることができません。Python Wandとimagemagickの輝度コントラストコマンド

source img

  • は、明るさを変更するための変調を使用しようとしました:

    value = 100 + value # no changes = 0 in console and 100 in wand img.modulate(brightness=value)

と私は白画素を持ついくつかの奇妙な遺物だ: brightness change attempt

    0をコントラストワンドでの作業のために
  • がちょうどcontrast_stretch()を持っており、私は幸運なことに、この

    convert '-brightness-contrast 0x%d'

答えて

1

ような何かをする方法を理解することはできません、-brightness-contrastはちょうどに実装されて-function Polynomialメソッドを呼び出します。 brightness x contrast引数をslop x interceptに変換するには、非常に簡単な数学が必要です。

import math 
from wand.image import Image 

class MyImage(Image): 
    def brightness_contrast(self, brightness=0.0, contrast=0.0): 
     slope=math.tan((math.pi * (contrast/100.0+1.0)/4.0)) 
     if slope < 0.0: 
      slope=0.0 
     intercept=brightness/100.0+((100-brightness)/200.0)*(1.0-slope) 
     self.function("polynomial", [slope, intercept]) 

with MyImage(filename="rose:") as img: 
    img.brightness_contrast(0.0, 10.0) 
    img.save(filename="rose.png") 

rose.png

+0

非常に単純な:)はい、それは作品だが、私はどのように理解していません。しかし、imagemagickも私のためのブラックボックスです。私はWandの開発者がシェルのような類似のAPIを作成しなかった理由を理解できません。 – user7001187

+1

説明として、明るさを10%増やしたい場合はImageMagick -modulate(110,100,100)に相当するものを使用してください。しかし、あなたはコントラストを変えたいと思っています。あなたは、-level 0x90%または+ level 0x110%に相当するものを使用してこれを行うことができます。線形モードで-function多項式の等価物を使用すると、傾きと切片に相当する2つの引数aとbがあります。スロープはコントラストをコントロールし、インターセプトは明るさをコントロールします。 – fmw42

+0

絶対に! ['Image.modulate'](http://docs.wand-py.org/en/0.4.4/wand/image.html#wand.image.BaseImage.modulate)&[' Image.level'](http ://docs.wand-py.org/en/0.4.4/wand/image.html#wand.image.Image.level)は 'wand'ライブラリに存在します。 – emcconville

関連する問題