urlecode编码 winform_c# WINFORM 照片转BASE64编码问题

你的位置:

问答吧

-> .NET

-> 问题详情

c# WINFORM 照片转BASE64编码问题

项目需要,先想一张图片转换为BASE64编码,再将BASE64转换为UTF8,三张照片同时转换,每张约300K 左右。

同时转换后,系统超慢,全部转换完成需要大约5分钟时间。

求教,能否加快转换速度?怎样得到转换完成的标志?

曾经试过多线程,不是很理想,或许我的多线程写得不怎么好。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Web;

namespace WindowsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

string A = Get_zjdz("D:/1.JPG");

string B = Get_zjdz("D:/2.JPG");

string C = Get_zjdz("D:/3.JPG");

textBox1.Text = A + B + C;

}

public string Get_zjdz(string fileadd)

{

FileStream fs = new FileStream(fileadd, FileMode.Open);

int filelength = 0;

filelength = (int)fs.Length; //获得文件长度

Byte[] fl = new Byte[filelength];

fs.Read(fl, 0, filelength);

fs.Close();

string bbc1 = Convert.ToBase64String(fl);

string bbc2 = HttpUtility.UrlEncode(bbc1, Encoding.UTF8);

return bbc2;

}

}

}

作者: lb8133

发布时间: 2010-12-09

没有人知道吗?

作者: lb8133

发布时间: 2010-12-09

我试了,没像你说的那样慢的

我用700k的图转换也就是瞬间的事

作者: colorall

发布时间: 2010-12-09

你这不叫同时转换。

转换的时候看看CPU占用率,如果一个线程已经占70 -80了的话,使用多线程也没有意义。

多线程只有在瓶颈不是cpu的时候才有意义。像读写磁盘,输出字符到屏幕这些比较慢的操作,cpu没有100%,这样使用多线程,在一个线程等待IO或者输出操作的时候另一个线程可以运行。

作者: findcaiyzh

发布时间: 2010-12-09

lz你是不是内存不足,使用虚拟内存了。

作者: findcaiyzh

发布时间: 2010-12-09

你是要把这个图像的文件数据转换为base64 还是这个图片的文件名称或者路径转换为base64?还是打算把这个图片所包含的图像信息转换为base64?

第一种做法类似hash值

第二种 就是 把图片每个像素的值转换为base4

第三种就是类似迅雷地址那类base64编码

看你的代码是直接把这个文件的二进制代码之间转化为base64

作者: rongqiumao

发布时间: 2010-12-09

引用 5 楼 rongqiumao 的回复:

你是要把这个图像的文件数据转换为base64 还是这个图片的文件名称或者路径转换为base64?还是打算把这个图片所包含的图像信息转换为base64?

第一种做法类似hash值

第二种 就是 把图片每个像素的值转换为base4

第三种就是类似迅雷地址那类base64编码

看你的代码是直接把这个文件的二进制代码之间转化为base64

图片文件是要转换为BASE64然后存贮在数据库里

作者: lb8133

发布时间: 2010-12-09

努力学习

作者: q6196310920

发布时间: 2010-12-09

引用 2 楼 colorall 的回复:

我试了,没像你说的那样慢的

我用700k的图转换也就是瞬间的事

你的机器内存是1个G的,用上面的程序,转换这三张70K/张的照片用了3分钟左右。

您是一张张转的?试过转3张吗?

作者: lb8133

发布时间: 2010-12-09

看看CPU占用率,在决定是否使用多线程

ref 传递参数

或线程是否执行完毕

作者: wuyq11

发布时间: 2010-12-09

在说明一下,变慢的原因是因为后面这句

string bbc2 = HttpUtility.UrlEncode(bbc1, Encoding.UTF8);

再次进行了编码,有什么办法么?

使用string bbc2 = HttpUtility.UrlDecode(bbc1, Encoding.UTF8);不到两秒就出来了,但是不许我需要的数据,必须进行UrlEncode,但是这样很慢。

作者: lb8133

发布时间: 2010-12-09

引用 9 楼 wuyq11 的回复:

看看CPU占用率,在决定是否使用多线程

ref 传递参数

或线程是否执行完毕

这个程序一运行,CPU的占用率稳定在60%以上

作者: lb8133

发布时间: 2010-12-09

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值