精华内容
下载资源
问答
  • FFmpeg 像素格式转换和尺寸转换

    千次阅读 2018-08-10 15:11:33
    FFmpeg 可以实现像素格式转换和尺寸转换,但是性能开销非常大,对视频帧率影响比较大,实际开发中最好用 Shader来实现,FFmpeg的优势转换接口比较简单。 像素格式转换上下文 SwsContext (1)sws_getContext ...

    Demo

    FFmpeg 可以实现像素格式转换和尺寸转换,但是性能开销非常大,对视频帧率影响比较大,实际开发中最好用 Shader来实现,FFmpeg的优势转换接口比较简单。

    像素格式转换上下文 SwsContext

    (1)sws_getContext
    (2)sws_getCachedContext(
    struct SwsContext *context,
    int srcW, int srcH, 原宽高
    enum AVPixelFormat srcFormat,原像素格式
    int dstW, int dstH, 目标宽高
    enum AVPixelFormat dstFormat,目标格式
    int flags, 算法标签(性能差异 效果差异 针对尺寸变化)
    SwsFilter *srcFilter,过滤器
    SwsFilter *dstFilter,过滤器
    const double *param 算法中默认值的设定 可以默认);
    两个函数的差别是第一个参数:SwsContext
    sws_getContext 会创建一个上下文空间,sws_getCachedContext会去缓冲中找,前后两次参数没变时返回同一个

    //每一帧数据的处理
    int sws_scale(struct SwsContext *c,
    const uint8_t *const srcSlice[],具体数据的数组
    const int srcStride[],一行数据的大小
    int srcSliceY, 传0
    int srcSliceH, 图形高度
    uint8_t *const dst[], 目标的地址(指针数组)
    const int dstStride[]) 输出的一行数据的大小;

    void sws_freeContext(struct SwsContext *swsContext);//是否

         for (; ; ) {//保证能搜到全部的解码数据
                re = avcodec_receive_frame(cc, frame);
                if (re != 0) {
                    break;
                }
                if (cc == vc) {
                    frameCount++;
                    vctx = sws_getCachedContext(vctx, frame->width, frame->height, (AVPixelFormat)frame->format, outWidth, outHeight, AV_PIX_FMT_RGBA, SWS_FAST_BILINEAR, 0, 0, 0);
                    if (!vctx) {
                        NSLog(@"sws_getCachedContext failed!");
    
                    }else{
                        uint8_t *data[AV_NUM_DATA_POINTERS] = {0};
                        data[0] = (uint8_t *)rgb;
                        int lines[AV_NUM_DATA_POINTERS] = {0};
                        lines[0] = outWidth * 4;
                        int h = sws_scale(vctx, frame->data, frame->linesize, 0, frame->height
                                          , data, lines);
                        NSLog(@"sws_scale h :%d ",h);
                    }
                }
    
            }
            //最后一针的时候 avcodec_send_packet(cc, NULL)
            av_packet_unref(pkt);
    
    2018-08-03 19:16:54.397601+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.409398+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.417052+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.425106+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.440420+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.448448+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.457397+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.465670+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.473706+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.481495+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.489395+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.497006+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.504962+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.512761+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.520280+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.528375+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.543610+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.551972+0800 FFmpeg402[611:176423] sws_scale h :720
    2018-08-03 19:16:54.559866+0800 FFmpeg402[611:176423] sws_scale h :720
    

    音频重采样 SwrContext

    一般音频解码出来直播不能直接播放,需要经过冲采样

    SwrContext *swr_alloc(void); 上下文

    SwrContext *swr_alloc_set_opts(设置参数
    struct SwrContext *s,
    int64_t out_ch_layout,输出layout
    AVSampleFormat out_sample_fmt,输出的样本格式
    int out_sample_rate,输出样本率
    int64_t in_ch_layout,输入layout
    AVSampleFormat in_sample_fmt,输入的样本格式
    int in_sample_rate, 输入样本率
    int log_offset, 0
    void *log_ctx);日志 0

    int swr_init(struct SwrContext *s); 初始化

    void swr_free(struct SwrContext **s);释放

    ###转换函数swr_convert 对每一帧音频做重采样
    • int swr_convert(struct SwrContext *s,
    uint8_t **out,输出的数组
    int out_count,样本的数量 单通道
    • const uint8_t **in , 输入参数指针数组
    int in_count);

       //音频重采样上下文初始化
        SwrContext *actx = swr_alloc();
        //设置参数
        actx = swr_alloc_set_opts(actx,
                                  av_get_default_channel_layout(2),//2
                                  AV_SAMPLE_FMT_S16,
                                  ac->sample_rate,
                                  av_get_default_channel_layout(ac->channels),
                                  ac->sample_fmt,
                                  ac->sample_rate,
                                  0,
                                  0);
        re = swr_init(actx);
        if (re != 0) {
            NSLog(@"swr_init failed!");
        }else{
            NSLog(@"swr_init success!");
        }
    
             uint8_t *outData[2] = {0};
                    outData[0]  = (uint8_t *)pcm;
                    //重采样
                    int len = swr_convert(actx,//上下文
                                          outData,
                                          frame->nb_samples,
                                          (const uint8_t **)frame->data,
                                          frame->nb_samples);
            
                   NSLog(@"swr_convert len :%d ",len);
                    
    
    2018-08-03 19:45:47.054517+0800 FFmpeg402[630:182386] swr_convert len :1024
    2018-08-03 19:45:47.054560+0800 FFmpeg402[630:182386] swr_convert len :1024
    2018-08-03 19:45:47.066537+0800 FFmpeg402[630:182386] swr_convert len :1024
    2018-08-03 19:45:47.066658+0800 FFmpeg402[630:182386] swr_convert len :1024
    2018-08-03 19:45:47.066744+0800 FFmpeg402[630:182386] swr_convert len :1024
    2018-08-03 19:45:47.066872+0800 FFmpeg402[630:182386] swr_convert len :1024
    2018-08-03 19:45:47.066932+0800 FFmpeg402[630:182386] swr_convert len :1024
    2018-08-03 19:45:47.066977+0800 FFmpeg402[630:182386] swr_convert len :1024
    

    打完收工

    展开全文
  • pixelmash 2020是一款功能强大的图片像素转换工具,它不仅能够帮助用户把图片转换为以直观的像素点组成的像素图像,还支持绝大多数图片格式转换,从而可以很好的满足用户们的基本使用需求。同时该软件提供了非常多...

    pixelmash 2020是一款功能强大的图片像素转换工具,它不仅能够帮助用户把图片转换为以直观的像素点组成的像素图像,还支持绝大多数图片格式转换,从而可以很好的满足用户们的基本使用需求。同时该软件提供了非常多工具,如移动工具、刷子、绘图工具、铅笔、蒙面刷、填充、颜色选择器等,用户也可以在软件选择增加画笔半径、减少画笔半径、将当前颜色添加到调色板、从调色板中删除当前颜色、使调色板渐变。除此之外该软件,不但可以将图片转换为以直观的像素点组成的像素图像,而且能够快速把图片转换成为像素风格,并且包括将人物、物品、装备、建筑场景等各种图片像素化,并又不会破坏图片原来的特征,十分强大。ps:小编本次带来的是wpixelmash 2020,内附补丁,可以完美激活软件,让用户可以使用全部功能,亲测有效,有需要的朋友可放心下载。
    在这里插入图片描述
    软件安装教程:

    1、在本站下载解压,得到fix补丁和pixelmash 2020原程序。
    在这里插入图片描述

    2、双击安装,点击next进行下一步。
    在这里插入图片描述

    3、阅读并同意安装协议。
    在这里插入图片描述

    4、选择软件安装路径。
    在这里插入图片描述

    5、软件安装完成,记住不要勾选运行,直接退出向导。
    在这里插入图片描述

    6、将fix文件夹下的“Pixelmash.exe”复制到源程序安装目录下。
    默认安装目录【C:\Program Files\Pixelmash】
    在这里插入图片描述

    7、以上就是本次pixelmash 2020的软件安装教程,希望能对用户有帮助。
    在这里插入图片描述

    展开全文
  • javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 ...javaCV开发详解之4:转流实现(也可作为本地收流、推流,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流

    javacv实战专栏目录:

    JavaCV实战专栏文章目录(JavaCV速查手册)


     

    前言

    有很多场景,需要修改视频解码出来的图像像素格式,比如典型的场景是我们要保存jpg/png/gif/apng等等截图和动态图或者要进行opencv图像处理,就需要用到yuv、rgb和rgba等等像素格式才行。其实在前面几章导出gif和apng动态图已经涉及到了像素格式转换,但是那只是其中一部分,比如经过图像处理后的像素格式还需要推流,这时候还需要再编码前进行像素格式转换,才能进行编码,本章主要分析解码后像素格式转换和编码前像素格式转换。

    在javacv中,有两个地方会发生或者让javacv进行像素格式转换的操作:FrameGrabber和FrameRecorder中。由于FrameGrabber和FrameRecorder有多个子类实现,所以本篇文章以FFmpegFrameGrabber和FFmpegFrameRecorder为例。它们分别发生在FFmpegFrameGrabber解码后和FFmpegFrameRecorder编码前。如果是转封装并不涉及像素格式转换,转封装为什么无法修改视频参数和像素格式等等操作的概念请参考:JavaCV入门指南:序章

    源码剖析

    FFmpegFrameGrabber触发像素格式转换操作分别发生在FFmpegFrameGrabber视频解码(decode)之后,如果ImageMode模式为COLOR和GRAY,则立刻触发ffmpeg中的SwsContext像素格式转换操作,进行转换的内容除了pix_fmt(像素格式)之外还包含:width(图像宽度)、height(图像高度)和imageScalingFlags(缩放比例)。

    FFmpegFrameRecorder中则是在编码(encode)前会检查像素格式pixelFormat(像素格式)、width(图像宽度)和height(图像高度)这三个参数,如果这三个参数任意一个不为空,则触发编码前的像素格式转换操作,进行格式转换的内容与FFmpegFrameGrabber中的参数相同:pixelFormat(像素格式)、width(图像宽度)、height(图像高度)和imageScalingFlags(缩放比例)这四个参数。

    所以现在很明确了,让我们立刻开始吧。为了方便演示,我们直接读取视频文件为例。

    实现功能

    1、读取视频文件,在解码后进行像素格式转换

    2、录制视频文件,在编码前进行像素格式转换

     

    示例说明

    1、FFmpegFrameGrabber中解码后触发像素格式转换

    在FFmpegFrameGrabber中需要设置ImageMode(图像模式)才能触发像素格式转换,FFmpegFrameGrabber默认的图像模式是:ImageMode.Color

    ImageMode是个枚举,包含三个枚举常量:COLOR, GRAY, RAW

    所以,FFmpegFrameGrabber默认是会触发像素格式转换的,只有当图像模式设置成ImageMode.RAW(原生)时,才不会触发像素格式转换。,COLOR和GRAW模式都会触发像素格式转换。

    除了RAW模式不会触发像素格式转换外,还有grabSample(获取音频采样数据)和grabPakcet(获取解复用的视频帧,未解码)都不会触发像素格式转换。

     

    FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(input);

    //只有设置ImageMode.RAW的时候才不会进行格式转换,设置成color和gray都会触发像素格式转换,默认是ImageMode.COLOR模式
            grabber.setImageMode(imageMode.RAW);
            
            //如果不触发SwsContext像素格式转换,pixelFormat、width、height和imageScalingFlags参数不会起效果
            grabber.setImageWidth(800);
            grabber.setImageHeight(600);
            grabber.setImageScalingFlags(0);//缩放比例,0表示不缩放
            grabber.setPixelFormat(avutil.AV_PIX_FMT_NONE);//使用avutil中的像素格式常量,例如:avutil.AV_PIX_FMT_NONE
            
            //grabber.setFormat(format);//这个参数设置是没有用的
            
            grabber.setVideoCodec(avcodec.AV_CODEC_ID_NONE);//编码格式,用于编码和解码。使用avcodec中的编码常量,例如:avcodec.AV_CODEC_ID_NONE
            

    参数说明:

    (1)ImageMode:用来选择像素模式,分别有三个常量:COLOR(颜色模式), GRAY(灰度图模式,出来的图像是灰度图,用于主要用于方便后期图像处理), RAW(原生模式)

    (2)pixelFormat、width、height和imageScalingFlags这四个参数是会在像素格式转换中进行转换的内容。

     

    2、FFmpegFrameRecorder中编码前触发像素格式转换

    与FFmpegFrameGrabber不同的是,这里不需要设置ImageMode(图像模式),只要pixelFormatwidthheight这三个参数任意一个不为空,就会触发像素格式转换。

    FFmpegFrameRecorder recorder=new FFmpegFrameRecorder(output, width,height,0);
            recorder.setVideoCodecName(videoCodecName);//优先级高于videoCodec
            recorder.setVideoCodec(videoCodec);//只有在videoCodecName没有设置或者没有找到videoCodecName的情况下才会使用videoCodec
    //        recorder.setFormat(format);//这是javacv自己封装的一套转换机制,与ffmpeg不同,只支持flv,mp4,3gp和avi四种格式(flv:AV_CODEC_ID_FLV1;mp4:AV_CODEC_ID_MPEG4;3gp:AV_CODEC_ID_H263;avi:AV_CODEC_ID_HUFFYUV;)
            recorder.setPixelFormat(pixelFormat);// 只有pixelFormat,width,height三个参数任意一个不为空才会进行像素格式转换
            recorder.setGopSize(gopSize);//gop间隔
            recorder.setFrameRate(frameRate);//帧率
            recorder.setVideoBitrate(videoBitrate);//比特率
            recorder.setVideoQuality(videoQuality);//视频质量
            

    参数说明:

    (1)pixelFormat,width,height这三个参数是触发像素格式转换的参数,三个之中任意一个不会空且与输出格式不相同,都会触发。

    (2)imageScalingFlags(缩放比例):进行像素格式转换的内容还是这四个:pixelFormat,width,height和imageScalingFlags。但是这个imageScalingFlags参数在FFmpegFrameRecorder中却没有提供设置参数,也就是说,哈哈哈,我们又发现了一个bug吗?

     

    如果觉得博主写得还不错,欢迎“关注、收藏、点赞”一键三连!

     

    end


    其他JavaCV专栏推荐:

    JavaCV入门指南专栏

    JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到《快速上手篇》)

    JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作

    JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作

    JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用

    JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用

    JavaCV入门指南:帧过滤器(FrameFilter)的原理与应用

    JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类

    《快速上手篇》(为了区别,单独划分):

    JavaCV入门指南之快速上手篇:快速上手视频拉流、推流、录制文件、录屏、截图和编解码复用解复用等常用音视频处理操作

    javacv进阶tesserac文字识别系列:

    javaCV文字识别之1:基于google的tesserac ocr识别图片中的文字,跨平台支持英文中文简体繁体等各种字符识别

    javaCV文字识别之2:视频文字识别和视频提取字幕文字字符

    javacv进阶ffmpeg系列:

    javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片

    javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据

    javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转)

    javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题

    javacv进阶opencv系列:

    javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作

    javaCV图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制

    javacv图像处理3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)

    javacv图像处理系列:国内车辆牌照检测识别系统(万份测试准确率99.7%以上)

    javacv人脸检测识别:

    JavaCV进阶opencv图像处理:摄像头画面人脸检测

    JavaCV进阶opencv图像处理:ffmpeg视频图像画面人脸检测

    JavaCV进阶opencv图像处理:批量人脸图像分类训练

    JavaCV进阶opencv图像处理:摄像头图像人脸识别

    展开全文
  • C# 图片转换ICO工具

    千次阅读 2018-01-21 18:59:11
    以前总是喜欢用在线的方法将图片转换ICO文件。要是没网就是没办法了。所以做了一个软件工具。将BMP,JPG,PNP,GIF.ICO转换为规定大小的ICO文件。 1.文件格式判断 不通过文件扩展名而是通过二进制文件头进行格式判断。 ...

            以前总是喜欢用在线的方法将图片转换ICO文件。要是没网就是没办法了。所以做了一个软件工具。将BMP,JPG,PNP,GIF.ICO转换为规定大小的ICO文件。

    1.文件格式判断

    不通过文件扩展名而是通过二进制文件头进行格式判断。

            /// <summary>
            /// 通过读取文件头,判断是否为图片格式,并输出至typename
            /// </summary>
            /// <param name="typename">图片格式</param>
            /// <param name="filePath">文件路径</param>
            /// <returns>是否为指定的几种图片格式</returns>
            private bool IsPicture(out string typename, string filePath)
            {
                try
                {
                    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                    BinaryReader reader = new BinaryReader(fs);
                    string fileClass = "";
                    byte[] cb = new byte[6];
                    cb = reader.ReadBytes(6);
                    if (cb[0] == 0)
                    {
                        foreach (var bs in cb)
                        {
                            fileClass += bs.ToString();
                        }
                    }
                    else {
                        for (int i = 0; i < 2;i++ )
                        {
                            fileClass += cb[i].ToString();
                        }
                    }
                    reader.Close();
                    fs.Close();
                    if (
                        fileClass == FILEHEAD_BMP
                        || fileClass == FILEHEAD_JPG
                        || fileClass == FILEHEAD_PNG
                        || fileClass == FILEHEAD_GIF
                        || fileClass == FILEHEAD_ICO
                        )
                    {
                        typename = fileClass;
                        return true;
                    }
                    else
                    {
                        typename = "";
                        return false;
                    }
                }
                catch
                {
                    typename = "";
                    return false;
                }
            }


    2.转换Image为Icon

    这个代码我也是从网上找的,也不知道原创是谁了,因为很多文章都有。

            /// <summary>
            /// 转换Image为Icon
            /// </summary>
            /// <param name="image">要转换为图标的Image对象</param>
            public static Icon ConvertToIcon(Image image )
            {
                if (image == null)
                {
                     return null; 
                }
    
                using (MemoryStream msImg = new MemoryStream()
                                  , msIco = new MemoryStream())
                {
                    image.Save(msImg, ImageFormat.Png);
    
                    using (var bin = new BinaryWriter(msIco))
                    {
                        //写图标头部
                        bin.Write((short)0);           //0-1保留
                        bin.Write((short)1);           //2-3文件类型。1=图标, 2=光标
                        bin.Write((short)1);           //4-5图像数量(图标可以包含多个图像)
    
                        bin.Write((byte)image.Width);  //6图标宽度
                        bin.Write((byte)image.Height); //7图标高度
                        bin.Write((byte)0);            //8颜色数(若像素位深>=8,填0。这是显然的,达到8bpp的颜色数最少是256,byte不够表示)
                        bin.Write((byte)0);            //9保留。必须为0
                        bin.Write((short)0);           //10-11调色板
                        bin.Write((short)32);          //12-13位深
                        bin.Write((int)msImg.Length);  //14-17位图数据大小
                        bin.Write(22);                 //18-21位图数据起始字节
    
                        //写图像数据
                        bin.Write(msImg.ToArray());
    
                        bin.Flush();
                        bin.Seek(0, SeekOrigin.Begin);
                        return new Icon(msIco);
                    }
                }
            }

    3.界面

    拖几个按钮,label,panel,设置主窗体允许拖拽文件,几个事件,等等。工具类经常要置顶功能所以加了置顶开关。界面如下:



    设置需要输出的ICO大小,然后把一张图片拖进窗体或者通过按钮打开,就可以转换,保存为ICO了。


    ps:有个问题,就是文件名太长的话,状态栏会不显示!而不是只显示一部分,真奇葩。

    PS:加上源码打包下载

    http://download.csdn.net/download/wangzibigan/10216891



    展开全文
  • 25行Java代码将普通图片转换为字符画图片和文本

    千次阅读 多人点赞 2021-04-23 10:34:06
    生成字符画文本(像素转换字符显示后,打开字符画显示相当于原图的好几倍大,不要用记事本打开,建议用notepad++等软件打开) 生成字符画图片(背景颜色和画笔颜色代码里可设置调节) 新建普通java 项目,...
  • 像素,尺寸大小的转换

    万次阅读 2011-10-31 17:25:15
    今日转换打印机页面大小时有些含糊,现做记录。 以A4纸为例: XPS文件中print ticket 大小如下: 210000 297000 单位为微米。 即A4大小以毫米计算,为 210×297mm. 分辨率是96像素/英寸时,A4纸的尺寸...
  • 输出固定图片的HSV值,鼠标点击就能输出 import cv2 # 定义鼠标交互函数 def mouseColor(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: print('HSV:', hsv[y, x]) #输出图像坐标(x,y)处的HSV...
  • JavaScript图片旋转缩放和像素矩阵的获取
  • java按像素压缩,生成压缩图片

    千次阅读 2017-02-18 11:21:16
    像素压缩,生成压缩图片。 package httpreq.guide;import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.File; import java.io...
  • 用python将图片转换为字符图片,很多前辈都做过的东西,踩着前辈们的脚步,尝试用Python做些事,加强对python理解 将图片转换位字符串,需要引入pillow的Image模块 使用open()函数读取图片文件 &gt;&gt;...
  • 我们通常说某某相机2400万像素,就是指用这样的设备拍出来的图片总共能包含2400万个像素。 下图,放大其中一小部分,直到能看到一个个的小方块。那么,这一个个“小方块”就是一个个“像素”。 .....
  • 经纬度坐标与地图容器像素坐标相互转换 title > < link rel ="stylesheet" href ="http://cache.amap.com/lbs/static/main1119.css" /> < script src ="http://webapi.amap.com/maps?v=1.3&key=您申请的...
  • 图片像素尺寸(厘米/英寸)换算、在线转换 医学图像之DICOM格式解析
  • Java读取并修改图片像素

    万次阅读 2016-01-08 21:55:40
    欢迎使用Markdown编辑写博客本Markdown编辑使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 ...
  • 十九、项目:像素艺术编辑 原文:Project: A Pixel Art Editor 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 我看着眼前的许多颜色。 ...
  • 怎么把图片转换成BMP格式

    千次阅读 2017-10-06 10:11:52
    1.选择要进行格式的图片,双击,进入【Windows照片查看】 2.点击【打开】选项,选择【画图】,进入图片编辑窗口 3.点击【选择】,再在图片上选择要裁剪的区域,再点击【裁剪】 4.裁剪后,如果图片不够大的话,...
  • 【OpenGL】图片像素和分辨率

    千次阅读 2015-10-10 17:05:19
    图片像素和分辨率  对于像素和分辨率这两个词,主要见于图片和显示设备上。只要你用到手机里的照相功能,你都要接触到这两个概念。只是大多数人都是一知半解,而更多的人却根本就不知道,白白浪费了手机里500...
  • Tensorflow读取图片转换成张量

    千次阅读 2019-03-24 17:21:44
    使用神经网络对图片文件进行训练时,需要将图片信息转换为张量,这里介绍如何将图片信息转化为Tensorflow的张量信息。 本文完整代码:https://github.com/iapcoder/TensorflowReadIMG 一 步骤 1、构造文件队列 ...
  • 将任何普通图片转换为单色图

    千次阅读 2016-11-21 14:02:59
    主意,我说的是单色图,不是灰度图,也就是只有黑白...所以要将一张普通图片转化为单色图,首先要考虑的就是“曝光度”,比如我们取中间值,127,凡是在127以上的,我们认为是黑色,127以下的,我们认为是白色,具体来
  • 1、实现效果 原图: 我想将这个人的红色衣服换成蓝色衣服或者其他颜色: ...首先要下载pil库: pip install pillow ...img = Image.open("F:/myworkspace/image/1.jpg")#...print (img.size)#打印图片大小 width...
  • R countcolors包:像素级分析处理图片

    千次阅读 2019-01-16 11:36:00
    作者:李誉辉 四川大学在读研究生转载自公众号:EasyCharts 1 简介countcolors包是Hannah Weller编写的,根据”RGB色值范围“查找图片中...
  • 灰度图 以数组存储每个像素的数据,每个数据叫做一个灰度值 彩色图像灰度处理公式:R*0.299+G*0.587+B*0.114 方式一:指针操作。 extern "C" { JNIEXPORT jintArray JNICALL Java_...
  • public byte[] ImgToByt(Image img) //图片转换成字节流 { MemoryStream ms = new MemoryStream(); img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); return ms.ToArray(); } private void ...
  • 根据自己的需要做了少许改动 import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage;...另外鼠标放在图片上,在左下角可以看见该像素点的x,y坐标,便于搜索你想要的范围
  • 如何将PDF文件转换成清晰的图片

    万次阅读 2016-09-02 11:20:29
     打开转换器选择文件转图片,然后可以直接将需要转换的文件拖拽添加至转换器列表。  一般默认是将文档转换成为jpg格式的图片,如果是转换成其他图片格式,那么就右击该文件,在“设置图片输出格式”选项中选择...
  • javacpp-FFmpeg系列之2:通用拉流解码,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据 javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转) 补充: ...
  • 附上Himetric尺寸与像素尺寸的转换关系,以IPicture加载图片为例, IPicture ::get_Width和 IPicture :: get_Height获取是Himetric尺寸,要转换像素尺寸,代码如下: ...... // 前面的代码省略 // don't...
  • 由于投论文要求图像都是最少300dpi,而有的图片是直接截来的,所以需要处理一下,网上查阅了一番,得到如下的解决办法,先简要介绍,然后介绍具体步骤,每个步骤再详解。 整体流程: QQ截图——粘贴至word——...
  • 由于很多普片存在,很多PNG图片只能用pdflatex进行编译,但是编译后的中文复制出来后都是乱码,非常麻烦,于是采用latex编译,但是默认图片必须是eps或者pdf,网上找到解决方案,快速将png图片转换为eps格式。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,550
精华内容 21,420
热门标签
关键字:

像素图片转换器