def extract(self): a = Steganography.Carrier(self.carrier2_array) b = a.extractPayload() filePath = "/home/yara/ee364/ee364b02/Lab11/new.png" scipy.misc.imsave(filePath,b.img) self.displayImage(self.viewPayload2,filePath)
def newCarrier1(self): print("Carrier1") self.carrier1InPlace = True self.car1Img = self.viewCarrier1.imgArr self.carrier1 = Steganography.Carrier(img=self.car1Img) self.existsPayload = self.carrier1.payloadExists() if self.existsPayload: self.chkOverride.setEnabled(True) self.lblPayloadFound.setText(">>>> Payload Found <<<<") else: self.chkOverride.setEnabled(False) self.lblPayloadFound.setText("") if len(self.carrier1.img.shape) == 3: self.carrierSizeVal = self.carrier1.img.shape[ 0] * self.carrier1.img.shape[1] else: self.carrierSizeVal = self.carrier1.img.size self.txtCarrierSize.setText(str(self.carrierSizeVal)) self.checkSaveBtnConds()
def compression_1(self): if self.chkApplyCompression.isChecked(): self.slideCompression.setEnabled(True) self.compression = self.slideCompression.value() if self.flag == 1: self.set_diplays(self.viewPayload1, self.filePath_pay) if self.flag_carrier == 1 and self.flag_payload == 1: aa = Steganography.Carrier(self.carrier_array) if aa.payloadExists() and self.chkOverride.isChecked() and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) elif (not(aa.payloadExists())) and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) else: self.btnSave.setEnabled(False) self.slideCompression.valueChanged.connect(lambda: self.set_value_compression() ) else: self.slideCompression.setEnabled(False) self.compression = -1 if self.flag == 1: self.set_diplays(self.viewPayload1, self.filePath_pay) if self.flag_carrier == 1 and self.flag_payload == 1: aa = Steganography.Carrier(self.carrier_array) if aa.payloadExists() and self.chkOverride.isChecked() and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) elif (not(aa.payloadExists())) and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) else: self.btnSave.setEnabled(False)
def clean(self): a = Steganography.Carrier(self.carrier2_array) b = a.clean() scipy.misc.imsave(self.filePath,b) self.lblCarrierEmpty.setText(">>>>Carrier Empty<<<<") self.btnExtract.setEnabled(False) self.btnClean.setEnabled(False)
def random(self): if self.flag_carrier == 1 and self.flag_payload == 1: aa = Steganography.Carrier(self.carrier_array) if aa.payloadExists() and self.chkOverride.isChecked() and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) elif (not(aa.payloadExists())) and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) else: self.btnSave.setEnabled(False)
def clean(self): cleanData = self.carrier2.clean() h, w, d = cleanData.shape img = QImage(cleanData, w, h, w * d, QImage.Format_ARGB32) pixmap = QPixmap(img).scaled(self.viewCarrier2.maximumViewportSize(), Qt.KeepAspectRatio) scene = QGraphicsScene() scene.addPixmap(pixmap) scene.update() self.viewCarrier2.setScene(scene) self.viewPayload2.setScene(QGraphicsScene()) self.setCarrier2Widgets(S.Carrier(cleanData))
def newcarrier2(self): self.carr2 = Steganography.Carrier(self.viewCarrier2.imgArr) scn = QtGui.QGraphicsScene() scn.clear() self.viewPayload2.setScene(scn) self.viewPayload2.show() if (self.carr2.payloadExists()): self.btnExtract.setEnabled(True) self.btnClean.setEnabled(True) else: self.btnExtract.setEnabled(False) self.btnClean.setEnabled(False)
def embed(self): aa = Steganography.Carrier(self.carrier_array) bb = Steganography.Payload(self.payload_array,compressionLevel=self.compression) final_img = aa.embedPayload(bb,override=True) filePath, _ = QFileDialog.getSaveFileName(self, caption='Save Image ...', filter="PNG files (*.png)") if not filePath: return scipy.misc.imsave(filePath+'.png',final_img)
def viewCarrier2DropEvent(self, event): if event.mimeData().hasUrls: event.setDropAction(Qt.CopyAction) for url in event.mimeData().urls(): fname = str(url.toLocalFile()) if fname and fname.endswith(".png"): self.C2fname = fname try: self.carrier2 = S.Carrier(S.imageToArray(self.C2fname)) self.viewCarrier2lLoadImage() self.viewPayload2.setScene(QGraphicsScene()) self.setCarrier2Widgets(self.carrier2) except ValueError: event.ignore() else: event.ignore()
def newcarrier(self): self.carr = Steganography.Carrier(self.viewCarrier1.imgArr) self.carriersize = self.viewCarrier1.imgArr.size self.txtCarrierSize.setText(str(int(self.viewCarrier1.imgArr.size / 8))) self.chkOverride.setEnabled(True) if (self.carr.payloadExists()): self.lblPayloadFound.setText(">>>> Payload Found<<<<") else: self.lblPayloadFound.setText("") if ((self.chkOverride.isChecked() or (self.carr.payloadExists() == False)) and (self.payloadsize > 0 and self.payloadsize < self.carriersize)): self.btnSave.setEnabled(True) else: self.btnSave.setEnabled(False)
def processDrop(self, view, e): """ Process a drop event when it occurs on the views. """ mime = e.mimeData() # Guard against types of drops that are not pertinent to this app. if not mime.hasUrls(): return # Obtain the file path using the OS format. filePath = mime.urls()[0].toLocalFile() _, ext = splitext(filePath) if not ext == ".png": return # Now the file path is ready to be processed. # # TODO: Remove the print statement and continue the implementation using the filePath. # self.filePath = filePath if view == self.viewPayload1: self.filePath_pay = filePath self.flag = 0 self.set_diplays(view,filePath) if self.flag_carrier == 1 and self.flag_payload == 1: aa = Steganography.Carrier(self.carrier_array) if aa.payloadExists() and self.chkOverride.isChecked() and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) elif (not(aa.payloadExists())) and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) else: self.btnSave.setEnabled(False)
def set_value_compression(self): self.compression = self.slideCompression.value() if self.flag == 1: self.set_diplays(self.viewPayload1, self.filePath_pay) if self.flag_carrier == 1 and self.flag_payload == 1: aa = Steganography.Carrier(self.carrier_array) if aa.payloadExists() and self.chkOverride.isChecked() and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) elif (not(aa.payloadExists())) and (self.size_carrier > self.size_payload): self.btnSave.setEnabled(True) else: self.btnSave.setEnabled(False) a = str(self.compression) self.txtCompression.setText(a)
def newCarrier2(self): print("Carrier2") self.carrier2InPlace = True scene = QtGui.QGraphicsScene() scene.clear() self.viewPayload2.setScene(scene) self.viewPayload2.show() self.car2Img = self.viewCarrier2.imgArr self.carrier2 = Steganography.Carrier(img=self.car2Img) self.existsPayload2 = self.carrier2.payloadExists() if self.existsPayload2: self.btnExtract.setEnabled(True) self.btnClean.setEnabled(True) self.lblCarrierEmpty.setText("") else: self.btnExtract.setEnabled(False) self.btnClean.setEnabled(False) self.lblCarrierEmpty.setText(">>>> Carrier Empty <<<<")
def viewCarrier1DropEvent(self, event): if event.mimeData().hasUrls: event.setDropAction(Qt.CopyAction) for url in event.mimeData().urls(): fname = str(url.toLocalFile()) if fname and fname.endswith(".png"): self.C1fname = fname try: img = S.imageToArray(self.C1fname) self.carrier1 = S.Carrier(img) self.txtCarrierSize.setText(str(img.size)) self.viewCarrier1lLoadImage() self.chkOverride.setEnabled(False) self.chkOverride.setChecked(Qt.Unchecked) self.lblPayloadFound.setText("") if self.carrier1.payloadExists(): self.lblPayloadFound.setText(">>>>Payload Found<<<<") self.chkOverride.setEnabled(True) self.checkEmbedEnabled() except ValueError: event.ignore() else: event.ignore()
def set_diplays(self, view, filePath): if view == self.viewPayload1: if self.flag == 0: self.displayImage(view, filePath) self.chkApplyCompression.setChecked(False) self.slideCompression.setSliderPosition(0) self.slideCompression.setEnabled(False) img_array = scipy.misc.imread(filePath) a = Steganography.Payload(img = img_array) size = len(a.xml) size_1 = str(size) self.txtPayloadSize.setText(size_1) self.chkApplyCompression.setDisabled(False) self.flag = 1 self.flag_payload = 1 self.size_payload = size self.payload_array = img_array else: img_array = scipy.misc.imread(filePath) a = Steganography.Payload(img = img_array, compressionLevel= self.compression) size = len(a.xml) size_1 = str(size) self.payload_array = img_array self.size_payload = size self.txtPayloadSize.setText(size_1) elif view == self.viewCarrier1: self.displayImage(view,filePath) img_array = scipy.misc.imread(filePath) size = img_array.size/8 size_1 = str(size) self.txtCarrierSize.setText(size_1) aa = Steganography.Carrier(img_array) if aa.payloadExists(): self.lblPayloadFound.setText(">>>>Payload Found <<<<") self.chkOverride.setEnabled(True) else: self.lblPayloadFound.setText("") self.chkOverride.setEnabled(False) self.flag_carrier = 1 self.size_carrier = size self.carrier_array = img_array elif view == self.viewCarrier2: self.displayImage(view,filePath) img_array = scipy.misc.imread(filePath) self.carrier2_array = img_array a = Steganography.Carrier(img_array) if not(a.payloadExists()): self.lblCarrierEmpty.setText(">>>>Carrier Empty<<<<") self.btnExtract.setEnabled(False) self.btnClean.setEnabled(False) else: self.lblCarrierEmpty.setText("") self.btnExtract.setEnabled(True) self.btnClean.setEnabled(True)