A Tool to Clip Images
- using Microsoft.Win32;
- using System;
- using System.IO;
- using System.Text.RegularExpressions;
- using System.Windows;
- using System.Windows.Media.Imaging;
- namespace Clip
- {
- class Clip
- {
- [STAThread]
- static void Main(string[] args)
- {
- var openFileDialog = new OpenFileDialog()
- {
- Filter = "所有图片文件|*.bmp;*.dib;*.jpg;*.jpeg;*.jpe;*.jfif;*.png|位图文件|*.bmp;*.dib|JPEG|*.jpg;*.jpeg;*.jpe;*.jfif|PNG|*.png"
- };
- while (openFileDialog.ShowDialog() != true) ;
- var bitmapImage = new BitmapImage(new Uri(openFileDialog.FileName));
- Console.WriteLine("Left Margin: ");
- Console.WriteLine("Top Margin: ");
- Console.WriteLine("Right Margin: ");
- Console.WriteLine("Bottom Margin: ");
- Console.CursorTop = ;
- Console.CursorLeft = ;
- int leftMargin = int.Parse(Console.ReadLine());
- Console.CursorLeft = ;
- int topMargin = int.Parse(Console.ReadLine());
- Console.CursorLeft = ;
- int rightMargin = int.Parse(Console.ReadLine());
- Console.CursorLeft = ;
- int bottomMargin = int.Parse(Console.ReadLine());
- int width = bitmapImage.PixelWidth - leftMargin - rightMargin;
- int height = bitmapImage.PixelHeight - topMargin - bottomMargin;
- var writeableBitmap = new WriteableBitmap(width, height, bitmapImage.DpiX, bitmapImage.DpiY, bitmapImage.Format, bitmapImage.Palette);
- IntPtr backBuffer = writeableBitmap.BackBuffer;
- bitmapImage.CopyPixels(new Int32Rect(leftMargin, topMargin, width, height), backBuffer, height * writeableBitmap.BackBufferStride, writeableBitmap.BackBufferStride);
- var saveFileDialog = new SaveFileDialog()
- {
- Filter = "所有图片文件|*.bmp;*.dib;*.jpg;*.jpeg;*.jpe;*.jfif;*.png|位图文件|*.bmp;*.dib|JPEG|*.jpg;*.jpeg;*.jpe;*.jfif|PNG|*.png"
- };
- while (saveFileDialog.ShowDialog() != true) ;
- BitmapEncoder bitmapEncoder = null;
- if (Regex.IsMatch(saveFileDialog.SafeFileName, @"^.+\.(?:bmp|dib)$"))
- {
- bitmapEncoder = new BmpBitmapEncoder();
- }
- else if (Regex.IsMatch(saveFileDialog.SafeFileName, @"^.+\.(?:jpg|jpeg|jpe|jfif)$"))
- {
- bitmapEncoder = new JpegBitmapEncoder();
- }
- else if (Regex.IsMatch(saveFileDialog.SafeFileName, @"^.+\.(?:png)$"))
- {
- bitmapEncoder = new PngBitmapEncoder();
- }
- bitmapEncoder.Frames.Add(BitmapFrame.Create(writeableBitmap));
- var fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create);
- bitmapEncoder.Save(fileStream);
- }
- }
- }
A Tool to Clip Images的更多相关文章
- 基于2d Tool Kit 精灵合图,动作生成工具
http://blog.csdn.net/onerain88/article/details/18563687 2d Tool Kit 是一款出色的基于unity3d 开发2d游戏的工具,提供了丰富的 ...
- How to Write Doc Comments for the Javadoc Tool
http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html This document describe ...
- How to installation V145 Renault CAN Clip diagnostic software
Eobd2.fr has launched the new 2015 V145 Renault CAN Clip diagnostic tool (SP19-A and SP19-B). Here i ...
- [CSS] Useful CSS tool for Web designer and developer
1. Color Picker (Chrome) You might know how to use color picker in Chrome, recently there is a featu ...
- Split Animation Clip From FBX and Multiply Mode Sprite
Use Script To Creat 2D Animation Clip From Multiply Mode Sprite 很多时候美工拿过来的一张序列帧图片,我们需要转换成 Multiply M ...
- [免费了] SailingEase .NET Resources Tool (.NET 多语言资源编辑器)
这是我2010年左右,写 Winform IDE (http://www.cnblogs.com/sheng_chao/p/4387249.html)项目时延伸出的一个小项目. 最初是以共享软件的形式 ...
- [Tool] github 入手教程
简单的介绍一下 Github 的基本操作. 主页:https://github.com/ 首先自然是在 GitHub 注册一个帐号了.然后开始正文吧. Git 基本介绍 Git 是属于分布式版本控制系 ...
- jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...
- mtk flash tool,Win7 On VirtualBox
SP_Flash_Tool_exe_Windows_v5.1624.00.000 Win7 在 VirtualBox, 安裝 mtk flash tool, v5.1628 在燒錄時會 fail. v ...
随机推荐
- phpcms与discuz的ucenter整合
1.安装phpcms系统,域名为pc.me 2.安装discuz,并选择安上uc_server,域名为dz.me 3.在phpcms下phpsso的系统设置 4.到ucenter管理中心- ...
- 怎样完整地离线更新并升级基于 Debian 的操作系统
不久之前我已经向你展示了如何在任意离线的 Ubuntu 和 Arch Linux 操作系统上安装软件. 今天,我们将会看看如何完整地离线更新并升级基于 Debian 的操作系统. 和之前所述方法的不同 ...
- [SoapUI] Tips and Tricks(提示和技巧)
https://www.soapui.org/scripting-properties/tips-tricks.html
- 如何使用webpack打包前端项目
webpack概述 随着前端体积越来越大,功能越来越丰富,这时候就需要将前端工程化,而 webpack就是用于将前端各种文件打包起来. 一个简单的webpack应该包含以下几个概念 · 入口起点 · ...
- 经典递归问题:0,1背包问题 kmp 用遗传算法来解背包问题,hash表,位图法搜索,最长公共子序列
0,1背包问题:我写笔记风格就是想到哪里写哪里,有很多是旧的也没删除,代码内部可能有很多重复的东西,但是保证能运行出最后效果 '''学点高大上的遗传算法''' '''首先是Np问题的定义: npc:多 ...
- Linux应用开发入门(转)
今天偶然看到这篇文章,做个入门了解还是不错的. 前一阵子在QQ上和朋友聊天的时候,总会看到有人说Linux上的应用程序开发是高手才可以完成的,而且这种“迷信”在目前似乎还很普遍.然而,情况并不是这样的 ...
- 2018.09.24 bzoj1016: [JSOI2008]最小生成树计数(并查集+搜索)
传送门 正解是并查集+矩阵树定理. 但由于数据范围小搜索也可以过. 我们需要知道最小生成树的两个性质: 不同的最小生成树中,每种权值的边出现的个数是确定的 不同的生成树中,某一种权值的边连接完成后,形 ...
- Django的路由层(2)
https://www.cnblogs.com/yuanchenqi/articles/8931472.html django2.0版的path Django默认支持以下5个转化器: str,匹配除了 ...
- ESP8266-01一些内容
系统有些指令必须特性状态下才可以执行,即先执行一些其它AT指令 1.设置station模式的IP信息 AT+CIPSTA="192.168.19.1","192.168. ...
- c语言中几个常见的库函数strlen、strcmp、strcat、strcpy、strncpy、memset、memcpy、memmove、mmap
1.strlen() 1)计算给定字符串的长度,不包括’\0’在内 unsigned int strlen(const char *s) { assert(NULL != s);//如果条件不满足,则 ...