Official Site of this StegoTool is here.
Python : python-2.7.5.msi
SciPy & NumPy : scipy-0.13.2-win32-superpack-python2.7.exe, numpy-1.8.0-win32-superpack-python2.7.exe
PIL : PIL-1.1.7.win32-py2.7.exe
Matplotlib : matplotlib-1.3.1.win32-py2.7.exe
PyQt : PyQt4-4.10.3-gpl-Py2.7-Qt4.8.5-x32.exe
Qt : qt-windows-opensource-5.1.1-mingw48_opengl-x86-offline.exe
Libjpeg : jpegsr8b.zip (after "./configure", generate exe from ckconfig.c to generate jconfig.h and then "make")
MSYS & MinGW : MSYS-1.0.11.exe, MinGw4.5.0
SIP : sip-4.15.3.zip (Don't use MSYS, all could be done in cmd. "python configure.py -p win32-g++", set "mingw/bin" in your environment variable and then "mingw32-make", "mingw32-make install")
SetupTools : setuptools-2.0.tar.gz
Dateutil : python-dateutil-2.2.tar.gz
Pyparsing : pyparsing-2.0.1.tar.gz
All above is what you will need to install the tool. Most of my time was spent on fixing endless problems after installing Enthought Canopy (academic version). I thought it would be convenient but the fact was the opposite. So this morning installing libraries seperately made it through. Here is how the tool goes:
If you are to run on windows like me, please be sure to do the following changes:
1. StegoTool.py
def load_crypto_schemes():
schemedict = {}
cryptodir = os.path.join(WORK_DIR, config.CRYPTOFOLDER)
for scheme in os.listdir(cryptodir):
if scheme != '__init__.py' and scheme.endswith('.py'):
name = scheme[:-3]
# please be sure that CRYPTOFOLDER is written in UNIX form
mod_name = (config.CRYPTOFOLDER + name).replace('/', '.')
try:
mod = __import__(mod_name, fromlist=mod_name)
schemedict[name] = getattr(mod, name)
except ImportError:
logger.warning('"%s is not a Python module!' % name)
except AttributeError:
logger.warning('"%s does not contain a corresponding class'
% name)
return schemedict
2. qtwidgets.py
class ImageWidget(QtGui.QWidget):
""" Widget to display an image """
def __init__(self, title, img, parent=None):
""" img should be an PIL image. """
QtGui.QWidget.__init__(self, parent)
self.ui = parent.ui
layout = QtGui.QVBoxLayout()
label = QtGui.QLabel()
# directly wrting "image=ImageQt.ImageQt(img)" works fine on linux but crash on windows
# we can find solution here - http://skilldrick.co.uk/2010/03/pyqt-pil-and-windows/
if os.name == 'nt':
QtImage = ImageQt.ImageQt(img)
image = QtImage.copy()
else:
image = ImageQt.ImageQt(img)
pixmap = QtGui.QPixmap.fromImage(image)
label.setPixmap(pixmap)
layout.addWidget(label)
save_image = QtGui.QPushButton('Save Image')
def save():
if hasattr(img, 'tmp_file'):
shutil.copy(img.tmp_file, path)
else:
try:
img.save(str(path))
except Exception:
self.ui.display_error('Could not save image!')
save_image.clicked.connect(save)
layout.addWidget(save_image)
self.setLayout(layout)
self.setWindowTitle(title)
3. Problems about using libjpeg please refer to "How did I solve frequent crashing of libjpeg?"
No comments:
Post a Comment