scintilla 始める前に version 3
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
chodge
```
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import QPointF , QPoint ,QRectF ,Qt
from PyQt5.QtGui import QPainterPath ,QPainter ,QPen
from scipy import interpolate
from PIL import Image
import numpy
class App(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('hogetta')
self.setGeometry( 500, 50 , 500 , 500 )
self.x=[0,170,255] # to use scipy function
self.y=[255,170,0]
self.f_list=[] # look up table ( curve )
for l in range(256):
self.f_list.append(QPoint( l , 255-l)) # make initial table --> line
self.a = QPoint(4,4) # Tolerance in detecting point
self.pselected = -1 # selectedpoint
self.pmove = 0 # move flag
self.show()
def mouseMoveEvent(self ,e):
if self.pmove : # Dorag ing
self.x[1] = e.pos().x()
self.y[1] = e.pos().y()
self.makeLUT()
self.update()
def mousePressEvent(self ,e):
self.pmove = True
def mouseReleaseEvent(self ,e):
self.pmove = False
self.showimg()
def makeLUT(self): # make look up table by function
# linear quadratic × cubic
func = interpolate.interp1d(self.x, self.y, kind="quadratic" )
for l in range(256):
value=int(func(l))
value = value if value >=0 else 0
self.f_list[l] = QPoint( l , value )
def paintEvent (self,e):
painter= QPainter()
painter.begin(self)
painter.setPen( QPen( Qt.black , 2, style=Qt.SolidLine ) )
for l in range( 255 ):
painter.drawPoint( self.f_list[l] )
painter.setPen( QPen( Qt.red , 8, style=Qt.SolidLine ) )
painter.drawPoint( self.x[1] , self.y[1] )
painter.end()
def showimg(self):
im = Image.open(r"e:\Programs\python\qt\pil\image.jpg")
rgb_im = im.convert('RGB')
size = rgb_im.size
im2 = Image.new('RGBA',size)
data = im.getdata()
data2=[]
width, height = im.size
for l in range( width * height ):
r,g,b = data[l]
r = 255-self.f_list[r].y() # <<===
g = 255-self.f_list[g].y() # <<===
b = 255-self.f_list[b].y() # <<===
data2.append((r,g,b,0)) # <======== tupple!!!!!!
im2.putdata(data2)
im2.show()
return
# getpixel 遅い
for x in range(size[0]):
for y in range(size[1]):
r,g,b = rgb_im.getpixel((x,y))
# print(r,g,b)
r = int(self.f_list[r].y())
g = int(self.f_list[g].y())
b = int(self.f_list[b].y())
im2.putpixel((x,y),(r,g,b,0))
im2.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
```
hoge
hoge