using
System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Drawing;
using System.Collections;
using System.Drawing.Imaging;
public class CropImageManipulator
{
public CropImageManipulator()
{
}
// 不含扩展名的文件名
private string _fileNameWithoutExtension;
// 文件扩展名
private string _fileExtension;
// 文件所属的文件夹
private string _fileDirectory;
/// <summary>
/// 切分图片
/// </summary>
/// <param name="inputImgPath"></param>
/// <param name="cropWidth"></param>
/// <param name="cropHeight"></param>
/// <returns></returns>
public string Cropping( string inputImgPath, int cropWidth, int cropHeight)
{
this ._fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(inputImgPath);
this ._fileExtension = System.IO.Path.GetExtension(inputImgPath);
this ._fileDirectory = System.IO.Path.GetDirectoryName(inputImgPath);
// 装载要分隔的图片
Image inputImg = Image.FromFile(inputImgPath);
int imgWidth = inputImg.Width;
int imgHeight = inputImg.Height;
// 计算要分几格
int widthCount = ( int )Math.Ceiling((imgWidth * 1.00 ) / (cropWidth * 1.00 ));
int heightCount = ( int )Math.Ceiling((imgHeight * 1.00 ) / (cropHeight * 1.00 ));
// ----------------------------------------------------------------------
ArrayList areaList = new ArrayList();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
// sb.Append("<table cellpadding='0' cellspacing='0' border='[$border]'>");
sb.Append( " <table cellpadding='0' cellspacing='0' border='0'> " );
sb.Append(System.Environment.NewLine);
int i = 0 ;
for ( int iHeight = 0 ; iHeight < heightCount; iHeight ++ )
{
sb.Append( " <tr> " );
sb.Append(System.Environment.NewLine);
for ( int iWidth = 0 ; iWidth < widthCount; iWidth ++ )
{
string fileName = string .Format( " <img src='images/{0}_{1}{2}' /> " , this ._fileNameWithoutExtension, i, this ._fileExtension);
sb.Append( " <td> " + fileName + " </td> " );
sb.Append(System.Environment.NewLine);
int pointX = iWidth * cropWidth;
int pointY = iHeight * cropHeight;
int areaWidth = ((pointX + cropWidth) > imgWidth) ? (imgWidth - pointX) : cropWidth;
int areaHeight = ((pointY + cropHeight) > imgHeight) ? (imgHeight - pointY) : cropHeight;
string s = string .Format( " {0};{1};{2};{3} " , pointX, pointY, areaWidth, areaHeight);
Rectangle rect = new Rectangle(pointX, pointY, areaWidth, areaHeight);
areaList.Add(rect);
i ++ ;
}
sb.Append( " </tr> " );
sb.Append(System.Environment.NewLine);
}
sb.Append( " </table> " );
// ----------------------------------------------------------------------
for ( int iLoop = 0 ; iLoop < areaList.Count; iLoop ++ )
{
Rectangle rect = (Rectangle)areaList[iLoop];
Directory.CreateDirectory( this ._fileDirectory + " images/ " );
string fileName = this ._fileDirectory + " images/ " + this ._fileNameWithoutExtension + " _ " + iLoop.ToString() + this ._fileExtension;
Bitmap newBmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format24bppRgb);
Graphics newBmpGraphics = Graphics.FromImage(newBmp);
newBmpGraphics.DrawImage(inputImg, new Rectangle( 0 , 0 , rect.Width, rect.Height), rect, GraphicsUnit.Pixel);
newBmpGraphics.Save();
switch ( this ._fileExtension.ToLower())
{
case " .jpg " :
case " .jpeg " :
newBmp.Save(fileName, ImageFormat.Jpeg);
break ;
case " gif " :
newBmp.Save(fileName, ImageFormat.Gif);
break ;
}
}
inputImg.Dispose();
string html = sb.ToString();
return html;
}
/// <summary>
/// 文件保留到HTML文件
/// </summary>
/// <param name="path"></param>
/// <param name="contents"></param>
public void SavaFileToHtml( string path, string contents)
{
File.WriteAllText(path, contents);
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Drawing;
using System.Collections;
using System.Drawing.Imaging;
public class CropImageManipulator
{
public CropImageManipulator()
{
}
// 不含扩展名的文件名
private string _fileNameWithoutExtension;
// 文件扩展名
private string _fileExtension;
// 文件所属的文件夹
private string _fileDirectory;
/// <summary>
/// 切分图片
/// </summary>
/// <param name="inputImgPath"></param>
/// <param name="cropWidth"></param>
/// <param name="cropHeight"></param>
/// <returns></returns>
public string Cropping( string inputImgPath, int cropWidth, int cropHeight)
{
this ._fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(inputImgPath);
this ._fileExtension = System.IO.Path.GetExtension(inputImgPath);
this ._fileDirectory = System.IO.Path.GetDirectoryName(inputImgPath);
// 装载要分隔的图片
Image inputImg = Image.FromFile(inputImgPath);
int imgWidth = inputImg.Width;
int imgHeight = inputImg.Height;
// 计算要分几格
int widthCount = ( int )Math.Ceiling((imgWidth * 1.00 ) / (cropWidth * 1.00 ));
int heightCount = ( int )Math.Ceiling((imgHeight * 1.00 ) / (cropHeight * 1.00 ));
// ----------------------------------------------------------------------
ArrayList areaList = new ArrayList();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
// sb.Append("<table cellpadding='0' cellspacing='0' border='[$border]'>");
sb.Append( " <table cellpadding='0' cellspacing='0' border='0'> " );
sb.Append(System.Environment.NewLine);
int i = 0 ;
for ( int iHeight = 0 ; iHeight < heightCount; iHeight ++ )
{
sb.Append( " <tr> " );
sb.Append(System.Environment.NewLine);
for ( int iWidth = 0 ; iWidth < widthCount; iWidth ++ )
{
string fileName = string .Format( " <img src='images/{0}_{1}{2}' /> " , this ._fileNameWithoutExtension, i, this ._fileExtension);
sb.Append( " <td> " + fileName + " </td> " );
sb.Append(System.Environment.NewLine);
int pointX = iWidth * cropWidth;
int pointY = iHeight * cropHeight;
int areaWidth = ((pointX + cropWidth) > imgWidth) ? (imgWidth - pointX) : cropWidth;
int areaHeight = ((pointY + cropHeight) > imgHeight) ? (imgHeight - pointY) : cropHeight;
string s = string .Format( " {0};{1};{2};{3} " , pointX, pointY, areaWidth, areaHeight);
Rectangle rect = new Rectangle(pointX, pointY, areaWidth, areaHeight);
areaList.Add(rect);
i ++ ;
}
sb.Append( " </tr> " );
sb.Append(System.Environment.NewLine);
}
sb.Append( " </table> " );
// ----------------------------------------------------------------------
for ( int iLoop = 0 ; iLoop < areaList.Count; iLoop ++ )
{
Rectangle rect = (Rectangle)areaList[iLoop];
Directory.CreateDirectory( this ._fileDirectory + " images/ " );
string fileName = this ._fileDirectory + " images/ " + this ._fileNameWithoutExtension + " _ " + iLoop.ToString() + this ._fileExtension;
Bitmap newBmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format24bppRgb);
Graphics newBmpGraphics = Graphics.FromImage(newBmp);
newBmpGraphics.DrawImage(inputImg, new Rectangle( 0 , 0 , rect.Width, rect.Height), rect, GraphicsUnit.Pixel);
newBmpGraphics.Save();
switch ( this ._fileExtension.ToLower())
{
case " .jpg " :
case " .jpeg " :
newBmp.Save(fileName, ImageFormat.Jpeg);
break ;
case " gif " :
newBmp.Save(fileName, ImageFormat.Gif);
break ;
}
}
inputImg.Dispose();
string html = sb.ToString();
return html;
}
/// <summary>
/// 文件保留到HTML文件
/// </summary>
/// <param name="path"></param>
/// <param name="contents"></param>
public void SavaFileToHtml( string path, string contents)
{
File.WriteAllText(path, contents);
}
}
private
void
button1_Click(
object
sender, EventArgs e)
{
CropImageManipulator cim = new CropImageManipulator();
string str = cim.Cropping( " c:/1.jpg " , 500 , 500 );
cim.SavaFileToHtml( " c:/1.htm " , str);
}
{
CropImageManipulator cim = new CropImageManipulator();
string str = cim.Cropping( " c:/1.jpg " , 500 , 500 );
cim.SavaFileToHtml( " c:/1.htm " , str);
}