コード例 #1
0
    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)
コード例 #2
0
    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()
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
 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))
コード例 #7
0
 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)
コード例 #8
0
    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)
コード例 #9
0
 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()
コード例 #10
0
 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)
コード例 #11
0
    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)
コード例 #12
0
    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)
コード例 #13
0
    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 <<<<")
コード例 #14
0
 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()
コード例 #15
0
    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)