C#图片压缩类winform
using System;
using System.Collections.Generic;
using
System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using
System.IO;
using System.Windows.Forms;
namespace EU.EUClass
{
class ImgGDI
{
public
ImgGDI()
{
//构造函数
}
///
/// Bitmap转换byte[]数组
///
///
///
public byte[] Bmptobyte(Bitmap
bmp)
{
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Jpeg);
ms.Flush();
byte[]
buffer = ms.GetBuffer();
ms.Close();
return
buffer;
}
///
/// byte[]数组转换Bitmap
///
///
///
public Bitmap bytetobmp(byte[]
buffer)
{
MemoryStream ms = new MemoryStream();
ms.Write(buffer, 0, buffer.Length);
Bitmap bmp = new Bitmap(ms);
ms.Close();
return
bmp;
}
///
/// 返回默认图片
///
///
public
Bitmap getInstance()
{
Bitmap bmp = DefaultPic();
return bmp;
}
///
/// 选取本地图片
///
///
///
public Bitmap LocalIMG(string
IMG)
{
FileStream fs = new FileStream(IMG, FileMode.Open);
Bitmap bmp = new Bitmap(fs);
fs.Close();
return bmp;
}
///
/// 返回流状态图片
///
///
///
public Bitmap ImgFromBase64(string
Img)
{
Bitmap bmp;
byte[] buffer =
Convert.FromBase64String(Img);
if
(buffer.Length > 0)
{
MemoryStream ms = new
MemoryStream();
ms.Write(buffer, 0, buffer.Length);
bmp = new Bitmap(ms);
ms.Close();
return bmp;
}
else
{
bmp =
DefaultPic() ;
return
bmp;
}
}
///
/// 默认图片
///
///
private Bitmap DefaultPic()
{
FileStream fs = new
FileStream(Application.StartupPath + @"\Goodr.jpg", FileMode.Open);
Bitmap bmp = new Bitmap(fs);
fs.Close();
return bmp;
}
///
/// GDI压缩图片
///
/// 传入参数Bitmap
///
public byte[] ImageGdi(Bitmap
bmp)
{
Bitmap xbmp = new Bitmap(bmp);
MemoryStream ms = new MemoryStream();
xbmp.Save(ms, ImageFormat.Jpeg);
byte[] buffer;
ms.Flush();
if (ms.Length >
95000)
{
//buffer = ms.GetBuffer();
double new_width = 0;
double new_height = 0;
Image m_src_image = Image.FromStream(ms);
if (m_src_image.Width >=
m_src_image.Height)
{
new_width = 1024;
new_height = new_width * m_src_image.Height /
(double)m_src_image.Width;
}
else if
(m_src_image.Height >= m_src_image.Width)
{
new_height = 768;
new_width = new_height *
m_src_image.Width / (double)m_src_image.Height;
}
Bitmap bbmp = new Bitmap((int)new_width, (int)new_height,
m_src_image.PixelFormat);
Graphics m_graphics = Graphics.FromImage(bbmp);
m_graphics.SmoothingMode =
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
m_graphics.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
m_graphics.DrawImage(m_src_image, 0,
0, bbmp.Width, bbmp.Height);
ms = new MemoryStream();
bbmp.Save(ms, ImageFormat.Jpeg);
buffer = ms.GetBuffer();
ms.Close();
return buffer;
}
else
{
buffer = ms.GetBuffer();
ms.Close();
return buffer;
}
}
}
}
C#图片压缩类winform的更多相关文章
- PHP图片压缩类,高清无损直接用就ok啦
这个不完全是我自己写的-_-!,但是好用呀 <?php /** * Created by PhpStorm. * Note:文件介绍 * User: Lynly * Date: 2018/11/ ...
- Android的图片压缩类ThumbnailUtils
从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework包下的android.media.ThumbnailUtils位置,可以帮助我们从mediapro ...
- PHP 图片缩放类
<?php /** * 图片压缩类:通过缩放来压缩. * 如果要保持源图比例,把参数$percent保持为1即可. * 即使原比例压缩,也可大幅度缩小.数码相机4M图片.也可以缩为700KB左右 ...
- PHP图片压缩
<?php /** * 分享请保持网址.尊重别人劳动成果.谢谢. * 图片压缩类:通过缩放来压缩.如果要保持源图比例,把参数$percent保持为1即可. * 即使原比例压缩,也可大幅度缩小.数 ...
- 使用FormData数据做图片上传: new FormData() canvas实现图片压缩
使用FormData数据做图片上传: new FormData() canvas实现图片压缩 ps: 千万要使用append不要用set 苹果ios有兼容问题导致数据获取不到,需要后台 ...
- php图片压缩-高清晰度
php高清晰度无损压缩 经常会用到把上传的大图片压缩,特别是体积,在微信等APP应用上,也默认都是有压缩的,那么,怎么样对图片大幅度压缩却仍能保持较高的清晰度呢? 压缩通常是有按比例缩放,和指定宽度压 ...
- 图片压缩java工具类
package com.net.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.Fil ...
- 压缩图片工具类,压缩100KB以内拿走直接用
最近遇到自拍上传图片过大问题,很烦恼,所以自己写了一个压缩图片的工具类使用,自测效果很不错,可以压缩到KB以内,像素还可以分辨清晰 下面Java代码奉上: import lombok.extern.s ...
- java图片压缩工具类(指定压缩大小)
1:先导入依赖 <!--thumbnailator图片处理--> <dependency> <groupId>net.coobird</groupId> ...
随机推荐
- date_default_timezone_get():
[Symfony\Component\Debug\Exception\ContextErrorException] Warning: date_default ...
- 3.15课·········out传值(传址)
public void Hs(out int a, out int b) { a = 4; b = 6; a = b++;//a=6,b=b+1=7//b先赋值给a,然后b+1 b = ++a;//a ...
- Spring Cloud之Ribbon与Nginx区别
客户端负载均衡器 在SpringCloud中Ribbon负载均衡客户端,会从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地. 让后在本地实现轮训负载均衡策略. Ribbon与Nginx ...
- java入门了解之快捷键
IDE(Integrated Development Environment ): 集成开发环境,集合开发.运行.调试于一体的一个软件 Eclipse 是一个开放源代码的.基于Java的可扩展开发平台 ...
- Docker-端口映射与容器互联
在使用docker过程中,通常会碰到需要多个服务组件容器共同协作的情况,这往往需要多个容器之间有能够互相访问到对方的服务除了通过网络访问外,Docker还提供了两个很方便的功能来满足服务访问的基本需求 ...
- Memory Layout of C Programs
Memory Layout of C Programs A typical memory representation of C program consists of following sec ...
- Spark- Spark内核架构原理和Spark架构深度剖析
Spark内核架构原理 1.Driver 选spark节点之一,提交我们编写的spark程序,开启一个Driver进程,执行我们的Application应用程序,也就是我们自己编写的代码.Driver ...
- 第一篇:Git操作详解
最近由于项目的需要,我需要负责整个项目的托管,其中涉及到很多Git相关的命令,所以就将之前用到的git相关的命令做了一个总结和归纳.由于开发环境是Linux,所以我接下来的操作命令均针对Linux环境 ...
- JavaScript 使用技巧(持续更新)
JavaScript 使用技巧(持续更新) 类型检测 使用Object.prototype.toString.call(obj)的方式. 因为无论typeof还是instanceof都无法做到精确判断 ...
- 数据库+maven
1.mysql <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-ja ...