Skip to content

Commit

Permalink
improved texture importer
Browse files Browse the repository at this point in the history
  • Loading branch information
danielmeinert committed Jun 27, 2022
1 parent 1de2ada commit deb83a5
Show file tree
Hide file tree
Showing 3 changed files with 236 additions and 13 deletions.
5 changes: 1 addition & 4 deletions pathgenerator_app/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,7 @@

def excepthook(exc_type, exc_value, exc_tb):
tb = "".join(traceback.format_exception(exc_type, exc_value, exc_tb))
print("error catched!:")
print("error message:\n", tb)



sys._excepthook(exc_type, exc_value, exc_tb)
msg = QMessageBox()
msg.setIcon(QMessageBox.Critical)
Expand Down
74 changes: 70 additions & 4 deletions pathgenerator_app/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from PyQt5.QtWidgets import QMainWindow, QDialog, QApplication, QWidget, QGroupBox, QToolButton, QComboBox, QPushButton, QLineEdit, QLabel, QCheckBox, QSlider, QSpinBox, QDoubleSpinBox, QListWidget, QFileDialog
from PyQt5 import uic, QtGui, QtCore
from PIL import Image
from PIL import Image, ImageEnhance
from PIL.ImageQt import ImageQt
from customwidgets import colorSelectWidget
import sys
Expand All @@ -17,6 +17,7 @@
import generate_path as gen
import resources_rc
from rctobject import palette as pal
from rctobject import sprites as spr

#om.rotate(-45, Image.NEAREST).resize((64,31),Image.NEAREST)

Expand Down Expand Up @@ -490,11 +491,16 @@ def __init__(self):
self.x = 0
self.y = 0
self.base = Image.new('RGBA', (1, 1))

self.contrast = 1.0
self.sharpness = 1.0
self.brightness = 1.0

self.factor = 1
self.angle = 0

self.spriteViewLabel = self.findChild(QLabel, "sprite_view")
self.spritePreviewLabel = self.findChild(QLabel, "sprite_preview")

self.buttonLoadBase = self.findChild(
QPushButton, "pushButton_loadImageButton")
Expand All @@ -506,6 +512,15 @@ def __init__(self):
self.sliderZoom = self.findChild(QSlider, "slider_zoom")
self.sliderZoom.valueChanged.connect(self.zoomChanged)

self.sliderContrast = self.findChild(QSlider, "slider_contrast")
self.sliderContrast.valueChanged.connect(self.contrastChanged)

self.sliderBrightness = self.findChild(QSlider, "slider_brightness")
self.sliderBrightness.valueChanged.connect(self.brightnessChanged)

self.sliderSharpness = self.findChild(QSlider, "slider_sharpness")
self.sliderSharpness.valueChanged.connect(self.sharpnessChanged)

# Sprite control buttons
self.buttonSpriteLeft = self.findChild(
QToolButton, "toolButton_left")
Expand Down Expand Up @@ -578,6 +593,10 @@ def clickLoadImage(self):
if filepath:
self.base = Image.open(filepath).convert('RGBA')
self.base.crop(self.base.getbbox())
self.sliderContrast.setValue(100)
self.sliderBrightness.setValue(100)
self.sliderSharpness.setValue(100)



self.updateMainView()
Expand All @@ -588,7 +607,25 @@ def angleChanged(self, val):
self.updateMainView()

def zoomChanged(self, val):
self.factor = 2**(val/10)
if val > 0:
self.factor = 1.5**(val/10)
else:
self.factor = 2**(val/10)

self.updateMainView()

def contrastChanged(self, val):
self.contrast = val/100

self.updateMainView()

def brightnessChanged(self, val):
self.brightness = val/100

self.updateMainView()

def sharpnessChanged(self, val):
self.sharpness = val/100

self.updateMainView()

Expand All @@ -609,6 +646,36 @@ def updateMainView(self):
pixmap = QtGui.QPixmap.fromImage(image)
self.spriteViewLabel.setPixmap(pixmap)

self.updatePreview(base)

def updatePreview(self, base):
if self.base.size == (1,1):
return

else:

x = self.x -int(base.size[0]/2)
y = self.y -int(base.size[1]/2)

im = self.fixToMask(base, x, y)

if self.contrast != 1:
im = ImageEnhance.Contrast(im).enhance(self.contrast)
if self.brightness != 1:
im = ImageEnhance.Brightness(im).enhance(self.brightness)
if self.sharpness != 1:
im = ImageEnhance.Sharpness(im).enhance(self.sharpness)

canvas = Image.new('RGBA', (71, 71))
canvas.paste(
im, (3, 21), im)

image = ImageQt(canvas)
pixmap = QtGui.QPixmap.fromImage(image)
self.spritePreviewLabel.setPixmap(pixmap)



def accept(self):

if self.base.size == (1,1):
Expand Down Expand Up @@ -637,8 +704,7 @@ def fixToMask(self, image, x, y, rot=0):
image = image.rotate(rot*90, Image.BICUBIC)
mask.paste(image, mask)

mask.save('test1.png')


return mask.rotate(-45, Image.NEAREST, expand=1).crop((1,2,65,64)).resize((64,31),Image.NEAREST)


Expand Down
170 changes: 165 additions & 5 deletions pathgenerator_app/importsprite.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>288</width>
<height>200</height>
<height>311</height>
</rect>
</property>
<property name="sizePolicy">
Expand All @@ -23,7 +23,7 @@
<property name="geometry">
<rect>
<x>120</x>
<y>170</y>
<y>280</y>
<width>161</width>
<height>21</height>
</rect>
Expand Down Expand Up @@ -181,7 +181,7 @@
<property name="geometry">
<rect>
<x>10</x>
<y>170</y>
<y>280</y>
<width>81</width>
<height>21</height>
</rect>
Expand Down Expand Up @@ -216,10 +216,10 @@
</rect>
</property>
<property name="minimum">
<number>-25</number>
<number>-30</number>
</property>
<property name="maximum">
<number>25</number>
<number>30</number>
</property>
<property name="singleStep">
<number>1</number>
Expand Down Expand Up @@ -307,6 +307,166 @@
<number>90</number>
</property>
</widget>
<widget class="QLabel" name="sprite_preview">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>180</y>
<width>74</width>
<height>74</height>
</rect>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">QLabel {

background-color: rgb(0, 0, 0);
}</string>
</property>
<property name="frameShape">
<enum>QFrame::WinPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QSlider" name="slider_contrast">
<property name="geometry">
<rect>
<x>100</x>
<y>180</y>
<width>111</width>
<height>22</height>
</rect>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>200</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickInterval">
<number>0</number>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>220</x>
<y>180</y>
<width>47</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Contrast</string>
</property>
</widget>
<widget class="QSlider" name="slider_brightness">
<property name="geometry">
<rect>
<x>100</x>
<y>210</y>
<width>111</width>
<height>22</height>
</rect>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>200</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickInterval">
<number>0</number>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>220</x>
<y>210</y>
<width>61</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Brightness</string>
</property>
</widget>
<widget class="QSlider" name="slider_sharpness">
<property name="geometry">
<rect>
<x>100</x>
<y>240</y>
<width>111</width>
<height>22</height>
</rect>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>200</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickInterval">
<number>0</number>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>220</x>
<y>240</y>
<width>61</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Sharpness</string>
</property>
</widget>
</widget>
<resources>
<include location="resources.qrc"/>
Expand Down

0 comments on commit deb83a5

Please sign in to comment.