免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 9240 | 回复: 21
打印 上一主题 下一主题

MIME::Base64 decode 原来encode 的图片,还原出来严重变异 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-09 09:39 |只看该作者 |倒序浏览
我在windows的cmd界面运行的。

在命令行中我先encode一个图片
perl -MMIME::Base64 -ne "print encode_base64($_)" <"d:/123.jpg" >"d:/123.txt"

之后还原为
perl -MMIME::Base64 -ne "print decode_base64($_)" <"d:/123.txt" >"d:/1234.jpg"

结果,1234.jpg 图片和123.jpg图片相比,严重变异。虽然还可以打开,但是图像已面目全非。

请帮帮。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2011-04-09 10:12 |只看该作者
binmode

论坛徽章:
0
3 [报告]
发表于 2011-04-09 11:29 |只看该作者
请帮我看看如何能正确显示图片。我这个不行。
有个文件123.jpg出来,只有几个字节,而且无法显示图片。
  1. open MYFILE, "<d:/12.jpg";
  2. binmode(MYFILE);
  3. open FILE, ">d:/123.jpg" or die "$!";
  4. binmode(FILE);
  5. print FILE MYFILE;
  6. close MYFILE;
  7. close FILE;
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-04-09 12:07 |只看该作者
  1. print FILE MYFILE;
复制代码
可以这样写?还不知道Perl可以这样句柄直接对着写。

论坛徽章:
0
5 [报告]
发表于 2011-04-09 12:38 |只看该作者
可以这样写?还不知道Perl可以这样句柄直接对着写。
x9x9 发表于 2011-04-09 12:07



    谢谢提醒。改动之后,这下正常了。

论坛徽章:
0
6 [报告]
发表于 2011-04-09 15:54 |只看该作者
截取中间从图片转化的部分来看,又是非打印字符而不是数字字母组合了。

我的原意是:
将图片转化成数字字母,再将这些数字字母转化成图片。还是不行。
这个脚本可以将图片转化图片,但是不是通过“图片-数字-图片”的途径。

论坛徽章:
0
7 [报告]
发表于 2011-04-09 16:13 |只看该作者
类似这样的。用 perl -MMIME::Base64 -ne "print encode_base64($_)" < "d:/123.jpg";
(部分)
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgK
DBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ
CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjL/wAARCAC6AQUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQo=
C//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNi
coIJCg==
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJ
ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQo=
C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy
0Qo=
FiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SF

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
8 [报告]
发表于 2011-04-09 19:35 |只看该作者
编码
#!/usr/bin/perl -w

use 5.012;
use MIME::Base64;

use Carp;

croak "usage: $0 file save_as" if @ARGV != 2;

open my $fh, '<', $ARGV[0] or die $!;

binmode $fh;

open my $output, '>', $ARGV[1] or die $!;

local $/;

print $output encode_base64 <$fh>, '';


解码
#!/usr/bin/perl -w

use 5.012;
use MIME::Base64;

use Carp;

croak "usage: $0 file decode_to" if @ARGV != 2;

open my $fh, '<', $ARGV[0] or die $!;

open my $output, '>', $ARGV[1] or die $!;

binmode $output;

local $/;

print $output decode_base64 <$fh>;

论坛徽章:
0
9 [报告]
发表于 2011-04-10 00:16 |只看该作者
谢谢楼上的,呵呵,你最热心了。
我先测试一下。

论坛徽章:
0
10 [报告]
发表于 2011-04-10 00:46 |只看该作者
zhlong8兄, 你将你的解码的一部分贴上来我看看,我用的是perl5.10, 不是5.12, 结果解码出来的还是不可打印字符。
这是我的一个png图片解码厚的内容(非打印的, 乱码)。
<褕4` ?碋鞪図联??x墯佷^i塥{,?馴轲刐贄)湕N}氘綼??

周末愉快
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP