zoukankan      html  css  js  c++  java
  • C# 图片截取 压缩

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Text;

    namespace 
    {
    public class CutImageHelper
    {
    /// <summary>
    /// 截取图片方法
    /// </summary>
    /// <param name="stream">图片</param>
    /// <param name="dataStream">字节</param>
    public static bool CutImage(byte[] stream, out byte[] dataStream)
    {
    //byte[]==>Bitmap
    MemoryStream ms1 = new MemoryStream(stream);
    Bitmap bitmap = (Bitmap)Image.FromStream(ms1);
    ms1.Close();

    int get = bitmap.Width <= bitmap.Height ? bitmap.Width / 2 : bitmap.Height / 2;
    int width = bitmap.Width / 2 - get / 2;
    int height = bitmap.Height / 2 - get / 2;

    if ((width < get) && (height < get))
    {
    if (((width + get) <= bitmap.Width) && ((height + get) <= bitmap.Height))
    {
    Bitmap destBitmap = new Bitmap(get, get);//目标图
    Rectangle destRect = new Rectangle(0, 0, get, get);//矩形容器
    Rectangle srcRect = new Rectangle(width, height, get, get);
    Graphics graphics = Graphics.FromImage(destBitmap);
    graphics.DrawImage(bitmap, destRect, srcRect, GraphicsUnit.Pixel);
    ImageFormat format = ImageFormat.Png;
    //压缩
    Compress(destBitmap);
    //Bitmap==>byte[]
    MemoryStream ms = new MemoryStream();
    destBitmap.Save(ms, ImageFormat.Bmp);
    dataStream = ms.GetBuffer(); //byte[] bytes= ms.ToArray(); 这两句都可以
    ms.Close();
    return true;
    }
    else
    {
    dataStream = new byte[0];
    return false;
    }
    }
    else
    {
    dataStream = new byte[0];
    return false;
    }
    }


    public static bool Compress(byte[] stream, out byte[] dataStream)
    {
    MemoryStream ms1 = new MemoryStream(stream);
    Bitmap bitmap = (Bitmap)Image.FromStream(ms1);
    ms1.Close();
    ImageCodecInfo myImageCodecInfo;
    //获得JPEG格式的编码器
    myImageCodecInfo = GetEncoderInfo("image/jpeg");
    System.Drawing.Imaging.Encoder myEncoder =System.Drawing.Imaging.Encoder.Quality;
    EncoderParameters myEncoderParameters= new EncoderParameters(1); ;
    EncoderParameter myEncoderParameter= new EncoderParameter(myEncoder, 15L);
    myEncoderParameters.Param[0] = myEncoderParameter;

    MemoryStream ms = new MemoryStream();
    bitmap.Save(ms, myImageCodecInfo, myEncoderParameters);
    dataStream = ms.GetBuffer(); //byte[] bytes= ms.ToArray(); 这两句都可以
    ms.Close();
    return true;
    }


    public static void Compress(Bitmap bmp)
    {
    System.Drawing.Imaging.Encoder myEncoder;
    EncoderParameter myEncoderParameter;
    EncoderParameters myEncoderParameters;

    myEncoder = System.Drawing.Imaging.Encoder.Quality;
    myEncoderParameters = new EncoderParameters(1);
    myEncoderParameter = new EncoderParameter(myEncoder, 15L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    }

    public static ImageCodecInfo GetEncoderInfo(String mimeType)
    {
    int j;
    ImageCodecInfo[] encoders;
    encoders = ImageCodecInfo.GetImageEncoders();
    for (j = 0; j < encoders.Length; ++j)
    {
    if (encoders[j].MimeType == mimeType)
    return encoders[j];
    }
    return null;
    }
    public static void savePath(Bitmap bmp, string str)//保存路径
    {
    ImageCodecInfo myImageCodecInfo;
    System.Drawing.Imaging.Encoder myEncoder;
    EncoderParameter myEncoderParameter;
    EncoderParameters myEncoderParameters;

    myImageCodecInfo = GetEncoderInfo("image/jpeg");
    myEncoder = System.Drawing.Imaging.Encoder.Quality;
    myEncoderParameters = new EncoderParameters(1);
    myEncoderParameter = new EncoderParameter(myEncoder, 15L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    bmp.Save(str, myImageCodecInfo, myEncoderParameters);
    }
    }
    }

  • 相关阅读:
    zhanwei
    站位
    Web前端开发:SQL Jsp小项目(二)------添加修改
    Web前端开发:SQL Jsp小项目(一)
    JDBC(用Eclipse操作数据库Oracle)的基础操作集合
    Thread多线程stopSleep顺序问题
    IO流详解之代码详解
    IO流详解(半教材类型)
    用JQuery编写textarea,input,checkbox,select
    Java编写ArrayBasic制作一个简单的酒店管理系统
  • 原文地址:https://www.cnblogs.com/ShenJA/p/14086464.html
Copyright © 2011-2022 走看看