首页 > 编程语言 >C# split big picture into small pieces via graphics

C# split big picture into small pieces via graphics

时间:2024-08-27 11:41:20浏览次数:7  
标签:picture via C# System Windows int bp IO using

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Rectangle = System.Drawing.Rectangle;
using System.IO;

namespace WpfApp288
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
        public MainWindow()
        {
            InitializeComponent();            
            SplitBigPicture();
        }

        private void SplitBigPicture()
        {
            string imgUrl = @"../../Images/1.jpg";
            int idx = 0;
            if (System.IO.File.Exists(imgUrl))
            {
                Bitmap bp = new Bitmap(imgUrl);
                int originalWidth = bp.Width;
                int originalHeight = bp.Height;
                int newWidth = bp.Width / 8;
                int newHeight = bp.Height / 8;
                string destDir = System.IO.Path.Combine(path, "Split8");
                if (!Directory.Exists(destDir))
                {
                    Directory.CreateDirectory(destDir);
                }
                for(int row=0;row<8;row++)
                {
                    for(int col=0;col<8;col++)
                    {
                        Bitmap newBp = new Bitmap(newWidth, newHeight);
                        using (Graphics g = Graphics.FromImage(newBp))
                        {
                            Rectangle srcRect = new System.Drawing.Rectangle(0+col*newWidth, 0+row*newHeight, newWidth,newHeight);
                            g.DrawImage(bp, 0,0, srcRect, GraphicsUnit.Pixel);
                        }
                        string newFileName = System.IO.Path.Combine(destDir, $"{row}_{col}.jpg");
                        newBp.Save(newFileName);
                    }
                }
            }
        }
    }
}

 

 

 

标签:picture,via,C#,System,Windows,int,bp,IO,using
From: https://www.cnblogs.com/Fred1987/p/18382345

相关文章

  • vue-cli中webpack-chain 与 configureWebpack 常用配置
    vue-cli文档1.webpack-chain1.定义通过链式调用操作webpack配置对象。(chain:链子)直接修改配置对象chainWebpack通过链式编程的形式,来修改默认的webpack配置2.包含的对象ChainedMap和ChainSet1.ChainedMap//1、从Map移除所有配置clear()//2、通过键值从Map......
  • OpenCV(VS2022配置OpenCV开发环境)
    目录1.下载OpenCV2.添加环境变量3.添加项目属性表4.配置DeBug属性表5.新的项目中快速配置6.配置Release属性表1.下载OpenCV访问:https://opencv.org/releases/2.添加环境变量添加环境变量%opencv%\build\x64\vc15\bin其中%opencv%为你自己的opencv文件夹的位置。......
  • Docker Compose配置详解
    1.什么是DockerCompose?DockerCompose是一种用于定义和运行多容器Docker应用程序的工具。通过一个docker-compose.yml文件,你可以配置应用程序的所有服务(例如,Web服务器、数据库、缓存)并轻松管理它们。2.基本DockerCompose命令docker-composeup:启动并运行docker-compose.ym......
  • 程序员必备的的5个刷题网站。大厂面试稳了 力扣 https://leetcode.cn
    程序员必备的的5个刷题网站。大厂面试稳了力扣https://leetcode.cn1、leetcode力扣。网址:https://leetcode.cnLeetCode是一个定位为求职的刷题网站,其中又以算法题为主。很多大厂在面试的时候,都会考算法。有空就刷一刷这里面的算法题,你的算法水平肯定会有大幅的提升,不管是求职,......
  • Yolov5模型训练+转ncnn模型
    配置YOLOv5依赖打开yolov5开源地址:https://github.com/ultralytics/yolov5可根据自身要求下载对应版本(无要求可跳过): 下载:下载完成安装依赖包:如需使用显卡进行训练需按照显卡版本安装部分依赖包:这两个包注掉,然后根据显卡版本安装依赖在cmd获取显卡版本:nvidia-smi......
  • 亲测好用,吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.09 更新】
    废话不多说,直接分享正文~以下是小编为大家搜集到的最新的ChatGPT国内站,各有优缺点。1、AIPlus(稳定使用)推荐指数:⭐⭐⭐⭐⭐     yixiaai.com该网站已经稳定运营了1年多了。2023年3月份第一批上线的网站。网站支持GPT-3.5、4.0及4o、4omini模型,手机和电脑都能用......
  • oracle system信息统计,​Oracle的SYSTEM和SYSAUX表空间 转载:https://blog.csdn.net
    一般情况下,业务数据应该存放在单独的数据表空间,而不应该使用系统已存在的表空间,尤其不能将业务数据保存到SYSTEM和SYSAUX表空间中,所以,DBA需要着重关注SYSTEM和SYSAUX表空间的占用情况。Oracle服务器使用SYSTEM表空间管理整个数据库。这个表空间包含系统的数据字典和关于数据库的......
  • C++笔记9•list•
    容器之list1.list的介绍(1).list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。(2).list的底层是双向循环链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。(3).优......
  • 书生大模型实战营3期 - 进阶岛 - 6 - MindSearch 快速部署
    文章目录闯关任务完成结果闯关任务任务描述:MindSearchCPU-only版部署任务文档:MindSearchCPU-only版部署完成结果按照教程,将MindSearch部署到HuggingFace,并提供截图。新建一个目录用于存放MindSearch的相关代码,并把MindSearch仓库clone下来:mkdir-......
  • C++学习 — 函数
    目录1.概述2.函数的定义3.函数的调用4.值传参5.函数的常见样式6.函数的声明7.函数的分文件编写8.函数默认参数 9.函数占位参数10.函数重载(1)函数重载概述(2)函数重载注意事项1.概述作用:将一段经常使用的代码封装起来,减少重复代码   一个较大的程序,一般......