コード例 #1
0
    def _test_compress(self, embed_data):
        image_path = os.path.join(tests_dir, 'origin.jpg')

        jaoutput = jpype.JClass('java.io.ByteArrayOutputStream')()
        jaimage = jpype.JClass(
            'java.awt.Toolkit').getDefaultToolkit().getImage(image_path)
        jaencoder = jpype.JClass('james.JpegEncoder')(jaimage, 80, jaoutput,
                                                      '')
        if embed_data:
            jaencoder.Compress(
                jpype.JClass('java.io.ByteArrayInputStream')(
                    jpype.java.lang.String(
                        embed_data.decode('utf-8')).getBytes()), 'abc123')
        else:
            jaencoder.Compress()
        jaarray = jaoutput.toByteArray()

        jpeg_encoder.F5Random = JavaF5Random
        pyoutput = StringIO.StringIO()
        pyimage = Image.open(image_path)
        pyencoder = JpegEncoder(pyimage, 80, pyoutput, '')
        pyencoder.compress(embed_data, 'abc123')
        pyarray = pyoutput.getvalue()
        pyoutput.close()

        self.assertEqual(len(jaarray), len(pyarray), 'length is not same')
        for i in range(len(jaarray)):
            aa = int(jaarray[i])
            bb = struct.unpack('b', pyarray[i])[0]
            self.assertEqual(aa, bb, '%d %d %d' % (i, aa, bb))
コード例 #2
0
    def _test_compress(self, embed_data):
        image_path = os.path.join(tests_dir, 'origin.jpg')

        jaoutput = jpype.JClass('java.io.ByteArrayOutputStream')()
        jaimage = jpype.JClass('java.awt.Toolkit').getDefaultToolkit().getImage(image_path)
        jaencoder = jpype.JClass('james.JpegEncoder')(jaimage, 80, jaoutput, '')
        if embed_data:
            jaencoder.Compress(jpype.JClass('java.io.ByteArrayInputStream')(
                jpype.java.lang.String(embed_data.decode('utf-8')).getBytes()), 'abc123')
        else:
            jaencoder.Compress()
        jaarray = jaoutput.toByteArray()

        jpeg_encoder.F5Random = JavaF5Random
        pyoutput = StringIO.StringIO()
        pyimage = Image.open(image_path)
        pyencoder = JpegEncoder(pyimage, 80, pyoutput, '')
        pyencoder.compress(embed_data, 'abc123')
        pyarray = pyoutput.getvalue()
        pyoutput.close()

        self.assertEqual(len(jaarray), len(pyarray), 'length is not same')
        for i in range(len(jaarray)):
            aa = int(jaarray[i])
            bb = struct.unpack('b', pyarray[i])[0]
            self.assertEqual(aa, bb, '%d %d %d' % (i, aa, bb))
コード例 #3
0
                print 'the output file exists, do you really want to override it?'
                '''
                answer = raw_input('y/n: ')
                if answer != 'y':
                    print 'exit'
                    sys.exit(0)
                '''
            output = open(options.output, 'wb')

            if options.hasais == 'n':
                encoder = JpegEncoder(image, 80, output, options.comment,
                                      False)  #image、output是文件对象
            else:
                encoder = JpegEncoder(image, 80, output, options.comment,
                                      True)  #image、output是文件对象
            encoder.compress(data, options.password)
            output.close()
            print '\n----embed end--------'
        if options.type == 'x':
            print '----start extract------'
            if options.output:
                output = open(options.output, 'wb')
            else:
                output = StringIO.StringIO()
            image = open(options.image, 'rb')  #steg_image
            JpegExtract(output, options.password).extract(image.read())

            if not options.output:
                print output.getvalue()

            image.close()
コード例 #4
0
                print 'there\'s no data to embed'
                sys.exit(0)

            if not options.output:
                print 'you didn\'t specify the output jpeg file, if will be default output.jpg'
                options.output = 'output.jpg'
            elif os.path.exists(options.output) and os.path.isfile(options.output):
                print 'the output file exists, do you really want to override it?'
                answer = raw_input('y/n: ')
                if answer != 'y':
                    print 'exit'
                    sys.exit(0)
            output = open(options.output, 'wb')

            encoder = JpegEncoder(image, 80, output, options.comment)
            encoder.compress(data, options.password)
            output.close()
        if options.type == 'x':
            if options.output:
                output = open(options.output, 'wb')
            else:
                output = StringIO.StringIO()
            image = open(options.image, 'rb')
            JpegExtract(output, options.password).extract(image.read())

            if not options.output:
                print output.getvalue()

            image.close()
            output.close()
    else: