剪切附加到.jpg文件的数据并保存为mpg文件

时间:2017-08-10 13:30:34

标签: image python-3.x

我的问题的背景是我想要提取动态照片的视频数据(由我的三星S7拍摄)。手动它很容易但很耗时。只需在HexEditor中打开.jpg文件,然后在“MotionPhoto_Data”行之后提取所有数据。第一部分是图像,第二部分是视频。

我目前的代码是

<?php
$array = array(
    '547650d3bfb9bce7ea6d61faf312fa41' => array
    (
        'id' => 1502369193000,
        'productid' => 'Product 1',
        'qty' => 1,
        'type' => 'sales',
        'user_id' => 'admin',
        'rowid' => '547650d3bfb9bce7ea6d61faf312fa41'
    ),
    '7473a2e4d2e4150c7de11d201538e179' => array
    (
        'id' => 1502369241000,
        'productid' => 'SG KENNA',
        'qty' => 1,
        'type' => 'purchase',
        'user_id' => 'admin',
        'rowid' => '7473a2e4d2e4150c7de11d201538e179'
    )
);

function searchInArray($array) {
   $returnArray = [];
   foreach ($array as $key => $val) {
       if ($val['user_id'] === 'admin' && $val['type'] === 'sales') {
           $returnArray[$key] = $array[$key];
       }
   }
   return $returnArray;
}

print_r(searchInArray($array));
if(isset($array) && !empty($array)) {
     echo 'Found';
} else {
     echo 'None found';
}
?>

我现在的问题是,我无法弄清楚如何以im = 'test.jpg' with open(im, 'rb') as fin: data = fin.read() data_latin = data.decode('latin1') fin.close() position = data_latin.find('MotionPhoto_Data') data_pic = data[:position] data_mpg = data[position:] 保存为工作jpg和data_pic作为工作视频的方式保存这些字符串。

我试过

data_mpg

但这没效果。我认为如何处理/保存我的数据存在一个基本问题,但我无法弄清楚如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

我假设您使用python 3,因为它标记为这样。

您不应使用'data.decode('latin1')进行解码。它是二进制数据。

data = fin.read()

然后将其写为二进制数据:

with open('test_pic.jpg', 'ab') as fout:
    fout.write(data_pic)
    fout.close()