精华内容
下载资源
问答
  • 【Photoshop】合并一系列序列帧图片序列帧大图

    万次阅读 热门讨论 2017-10-04 10:05:51
    在2D游戏中,序列帧图片的大图是很常见很常用的东西,他...所以我们需要学会利用Photoshop合并一系列序列帧图片序列帧大图。 一般用视频软件或者Gif处理软件导出来的帧系列图片是这样的: 你不可能拿这多达1

    在2D游戏中,序列帧图片的大图是很常见很常用的东西,他用于记录游戏主角的所有动作。比如上图,就是lf2中的一张序列帧大图。

    其实大部分软件都不支持gif或者直接拉个视频进去这样,序列帧图片来完成游戏主角的动作表现这项技术一直很经典。所以我们需要学会利用Photoshop合并一系列序列帧图片成序列帧大图。

    一般用视频软件或者Gif处理软件导出来的帧系列图片是这样的:


    你不可能拿这多达100张图片,导入程序。一般在编程时候,图片的合并为一张序列帧大图。

    肯定不可能一张张自己慢慢拼,就算你有这个心思,你未必能拼到鳞次栉比,符合游戏批量切割的要求。

    无须什么工具,你只要用photoshop cc以上的版本即可完成序列帧大图的拼接。

    具体如下操作:

    通过“文件”->“自动”->"联系表II"打开序列帧大图的批处理。

    选择源文件夹,最终的序列帧大图的大小,序列帧中的缩览图排序方式。最好先批量修改缩略图分辨率的大小。具体可以参考《【Photoshop】批量修改图片分辨率》(点击打开链接)。


    序列帧大图的大小和缩览图的排序方式应该根据缩览图的数量来定。缩览图也就是序列帧中的每一帧的小图。你要算一下,帧的数量,比如我这里有53个帧图。那就取一个近似的2次幂,也就是64。预计进行8x8的点阵排列这些序列帧图片成序列帧大图。所以缩览图的列数与行数都应该修改8x8。


    比如我这里缩览图分辨率已经修改为32x32,因此这里的序列帧大图宽高,都应该修改为32x8=256。


    设置好按确定,等待photoshop处理完成即可。最终效果如下图所示。

    一张gif:


    就被我弄成这样,当然,原本256x216的gif给我弄成每一张都是32x32帧图失真太严重了,现在技术发展了,一帧图弄成256x256也行。32x32一张帧图是以前VC6时代的做法~


    展开全文
  • 前言最近在学校上了一门《数字图像处理》的课程,要求一个实验,用很多图像拼接一张大图,类似与下面这种效果: 图是在网上找的,可以看到图中的小人其实是由很多的小图片组成的,课程要求就是作出这种效果...

    前言

    最近在学校上了一门《数字图像处理》的课程,要求做一个实验,用很多小图像拼接成一张大图,类似与下面这种效果:
    这里写图片描述
    图是在网上找的,可以看到图中的小人其实是由很多的小图片组成的,课程要求就是作出这种效果的图片。

    下面放出我做的成果图片:
    这里写图片描述

    处理之后:

    这里写图片描述

    程序还不是很完善,上面这种图颜色很单纯,没有特别多的细节变化,而一旦处理细节丰富的图像就成了下面的效果:

    原图:
    这里写图片描述

    处理之后:

    这里写图片描述

    让我想起了梵高… …
    程序还是不完善,,以后再改进算法,热切希望各位能补充改进意见。
    下面进入主题。

    开发环境

    系统:Ubuntu 16.04。
    语言:C++。
    图形处理库:openCV。

    前期配置

    首先要安装openCV图形库,至于windows10系统上怎么安装我还没有看,课本上有讲解,可以自己看,我只说Ubuntu上的安装。

    一、下载openCV源码

    到openCV的官网中下载Linux版本的opencv。
    这里写图片描述

    我下载的是VERSION 3.1 OpenCV for Linux/Mac,网速有点慢,请耐心等待。
    下载完毕会得到一个zip包,解压得到opencv-3.1.0文件夹,里面有这些东西:
    这里写图片描述

    图里面的build目录是没有的,这是我后来添加的,目前不要管它。

    二、预先安装一些软件

    sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev  
    

    不安装这些是跑不起来的。

    三、编译openCV源码

    进入opencv-3.1.0,建立build文件夹,然后编译

    # mkdir build
    # cd build
    # cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
    

    估计会编译20分钟左右,

    四、安装openCV

    编译完成后还是在build文件夹下,执行安装程序
    
    # make install
    

    如果最后显示有什么错误的话,很有可能是之前的步骤哪里输入错误了,重新来一遍试试。

    五、测试

    在其他地方建立一个文件夹test,写一个demo。
    具体流程是这样的,你的新建立一个文件夹test,在里面创建main.cpp文件和CMakeLists.txt文件。main.cpp文件中引入openCV库:

    // main.cpp
    
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    
    int main() {
        Mat image = imread("你的图片的路径");
        if (!image.data) {
            cout << "read image file fail!" << endl;
        }
        namedWindow("Image");
        imshow("Image", image);
    }
    

    CMakeLists.txt这样写

    cmake_minimum_required(VERSION 3.5)
    project(HandleImage)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    
    set(SOURCE_FILES main.cpp)
    add_executable(HandleImage ${SOURCE_FILES})
    find_package(OpenCV REQUIRED)
    target_link_libraries(HandleImage ${OpenCV_LIBS})
    

    然后在这个文件夹test下执行命令
    # cmake .
    # make

    如果前面没有错误的话,最后会在test目录下生成一个HandleImage可执行文件,运行它:

    # ./HandleImage
    

    算法思路

    我们手头有一张原图和许多张小图片,我们要将这些小图片组合起来,使组合后的图像看起来像原图。

    最终的图像是分成一块一块的,问题在于如何确定每一块对应哪一张小图片。我选择的是利用像素的RGB值来确定,思路如下:

    1、如果我要替换原图中一个15 × 15的像素块,那么取出这个块中所有像素点的R、G、B的值,分别求和取平均,最后得到的R、G、B三个值就作为这个像素块的RGB代表。
    2、由于所有的小图片都要转化成15 × 15的像素块,所以必须先将小图片进行放缩到15px × 15px,然后在用和上面相同的方法得到代表这个小图片的RGB值,这样每个小图片都会有一个自己的RGB值,我们会将它存储起来(暂时不考虑多个小图片RGB值相同的情况)。
    3、求原图中15 × 15像素块的RGB值与每个小图片的RGB的差值。公式如下

    int total = |原图片R值 - 小图片R值| + |原图片G值 - 小图片G值| + |原图片B值 - 小图片B值|
    

    这样得到了两者之间的偏差。由于原图会和所有的小图片进行比较,所以我们可以找到所有的比较之中偏差最小的小图片对这个块进行填充。

    源代码

    因为是在设计上交前一天做的,有点匆忙,所以代码只是实现了功能,完全没有考虑到可读性和代码设计,以后有机会会慢慢修改。

    源代码托管在github上,网址:https://github.com/PhoenixDefender/HandleImage

    项目中的README.md文件会有代码的使用说明,如果你是windows系统就得修改一下源代码才能运行。

    (PS:算法需要优化,求大神指点,感激不尽。)

    展开全文
  • Excel画甘特

    万次阅读 2019-06-08 00:28:49
    便于管理者弄清项目的剩余任务,对工作进度有一个更好的控。 甘特是以作业排序为目的,将活动与时间给联系起来的最早尝试的工具之一,帮助企业描述工作中心,超时工作等资源的使用。 怎么制作甘特? 1.首...

    什么是甘特图?
    甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一条线条图,横坐标为时间,纵坐标为项目,线条表示期间计划和实际完成的情况。直观表明计划什么时候进行,进展与要求的比对。便于管理者弄清项目的剩余任务,对工作进度有一个更好的把控。
    甘特图是以作业排序为目的,将活动与时间给联系起来的最早尝试的工具之一,帮助企业描述工作中心,超时工作等资源的使用。
    怎么制作甘特图?

    1.首先,我们建立一个新的Excel表格,按照图片所示,依次对行和列进行命名,将表格填写完整。

    在这里插入图片描述
    2.之后选中自己所填写的所有信息,选择Excel上方的插入,点击推荐的表格,会弹出一个可选框。
    在这里插入图片描述
    3.选择所有图表,点击条形图中的堆积条形图,在选择堆积条形图中的第一个。
    在这里插入图片描述
    4.如图所示,就是生成出来的图表了,但是我们还得对他进行一系列的设置,才能让他变成真正的甘特图。首先我们选中坐标的任务标栏,右边会弹出一个设置框,我们选择最后一项,勾上逆序类别。
    在这里插入图片描述
    5.之后,点击整个图表右边会出来几个可以点击小框。点击第三个,选择里面的选择数据源,并且把完成时间勾线掉
    在这里插入图片描述
    6.之后点击图表上面的时间栏,我们会发现时间栏特别的乱,而且日期不对,我们选择右边弹出来的设置框,在最后一类里面有最大值和最小值,里面写的是一串数字,我们把最小值改成你你制作的甘特图的最小的开始日期,最大值改成甘特图的最大的完成日期。比如我制作的这个,把最小值改成2019-6-1,最大值改成2019-6-30,输入完之后他会自动改成数字的格式。
    在这里插入图片描述
    7.最后,我们点击开始时间,在右边弹出的设置栏里面,把填充和边框都设置成无颜色的,这样我们的甘特图就制作完成了。

    在这里插入图片描述

    展开全文
  • matlab实现对图像的切割

    万次阅读 2015-01-05 10:26:48
    在有些程序中由于图像过,常常需要我们将图像切割几个比较的图案之后在进行相关的处理。  Img=imread('sssd.png'); imgsize=size(Img) subimg_width=600; subimg_height=1000; num_width_spilt=ceil(imgsize...

                   在有些程序中由于图像过大,常常需要我们将图像切割成几个比较小的图案之后在进行相关的处理。

     

    Img=imread('sssd.png');
    imgsize=size(Img)
    subimg_width=600;
    subimg_height=1000;
    num_width_spilt=ceil(imgsize(1)/subimg_width);
    num_height_spilt=ceil(imgsize(2)/subimg_height);
    num=num_width_spilt*num_height_spilt;
    for i=1:num_width_spilt
       for j=1:num_height_spilt
       if(i*subimg_width<=imgsize(1))
           width=subimg_width;
       else
           width=imgsize(1)-(i-1)*subimg_width;
       end
       if(j*subimg_height<=imgsize(2))
           height=subimg_height;
       else
           height=imgsize(2)-(j-1)*subimg_height;
       end
        subimg=zeros(width,height);
    
        for ii=1:width
        for jj=1:height
        for kk=1:3
       subimg(ii,jj,kk)=Img((i-1)*subimg_width+ii,(j-1)*subimg_height+jj,kk);
        end
        end
        end
     
     
      subimg=uint8(subimg);
        eval(['imwrite(subimg, ''subimg' num2str((i-1)*num_width_spilt+j) '.bmp'',''bmp'');']);
       end
    end
        
    对下图进行分割,得到四个小图



    得到的四个小图:

    第一张:


    第二张


    第三张:


    第四张


    展开全文
  • 1.带领你学习QT5/C++,从开发环境(QTCreator和VS2015两种)搭建到项目实战,从入门到精通。...第16章 Qt项目实战之视频转码器 第17章 Qt面试题分析与讲解 第18章 Qt小白是怎么炼成大牛的之中级篇概览

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,554,028
精华内容 621,611
关键字:

怎么把大图做成小图