byte[] b;
using (Bitmap bmp = new Bitmap(image))
{
b = PictureProvider.GetBytes(bmp);
}
...
using (Bitmap bmp = new Bitmap(image, image.Width - 100, image.Height - 100))
{
b = PictureProvider.GetBytes(bmp); //为什么这个b在一些情况下反而会大于上面那个b
} public static byte[] GetBytes(Image image)
{
if (image == null) return null;
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Jpeg);
return ms.ToArray();
}
}摸索了好久,总是不得图片压缩的要领,现在想对二进制形式的图片进行指定大小的压缩,如果有成熟的方法或者例子,请告知一下,先谢过了~图片
using (Bitmap bmp = new Bitmap(image))
{
b = PictureProvider.GetBytes(bmp);
}
...
using (Bitmap bmp = new Bitmap(image, image.Width - 100, image.Height - 100))
{
b = PictureProvider.GetBytes(bmp); //为什么这个b在一些情况下反而会大于上面那个b
} public static byte[] GetBytes(Image image)
{
if (image == null) return null;
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Jpeg);
return ms.ToArray();
}
}摸索了好久,总是不得图片压缩的要领,现在想对二进制形式的图片进行指定大小的压缩,如果有成熟的方法或者例子,请告知一下,先谢过了~图片
解决方案 »
- 键盘驱动按钮,怎么搞?
- GDI+相关..很简单的问题,进来看下啊
- 窗体相互调用的问题? 解决立刻给分,急!!!
- C#里能不能创建命名管道?如果能怎么创建,还有怎么在c#内实现进程内通讯
- C#下Excel.ApplicationClass问题
- 一个类型转换的问题
- 关于 notifyIcon 控件事件的问题
- ◆〓〓〓〓◆用netstat -a可以看见打开的端口,但是我怎么知道哪个端口该关掉,并且用什么方法怎样关闭一个端口???◆〓〓〓〓◆
- 关于自制控件的鼠标事件
- WinDes是什么啊?
- 请教一下:这种情况下,需要new 吗?
- 有自动增长列的表如何用dataAdaper的update()方法修改数据?
改质量之后 图片会变小
http://www.usingdll.com/7623.html
一般都是质量变成27的
如果你要压缩的话直接bitmap map = new bitmap(源图片,400,300);
这样修改大小你在传送的时候会小不少的传输量
bitmap有一个缓冲区。。貌似和他有关系
还有你获取byte的时候别用这种方法
从网上找找 有一种可以获取byte[]数组的方法
可能是你的这种方法有问题
最后有小例子下载。
“png”貌似不能解决问题吧~
“png”貌似不能解决问题吧~
首先不明白你的问题到底是什么,指定大小的压缩是什么意思?是无论什么图片必须都压缩到统一的文件大小么?那必然会带来质量的损失。
png是对图片数据的无损压缩。如果可以有损压缩那就用jpg设置质量就行了。
上面给的需求是只通过改变图片的Width和Height,来把所有图片(无论什么图片)压缩到统一文件大小。
如果通过设置质量来压缩,那么将一张10MB的图片压缩到300KB,需要如何进行?
上面给的需求是只通过改变图片的Width和Height,来把所有图片(无论什么图片)压缩到统一文件大小。
如果通过设置质量来压缩,那么将一张10MB的图片压缩到300KB,需要如何进行?
我估计上面没那么傻,肯定是要你压缩到统一的图片尺寸。图片文件的大小和图片文件格式,图片文件尺寸,图片本身内容丰富程度,以及某些格式下图片质量相关。你的要求是300K,这个要求几乎没法完成,因为你没法控制图片本身内容,这样就没法精确确定图片文件到底有多大。
不知道你明白了多少。
还是先把我说的那3章书读完再来问吧。