超大图片的缩放算法(撑爆内存的那种)
最近做图像处理时,在超大图的缩放上遇到了困难。阿里云OSS不支持20M以上图片的缩放。
用opencv在内存里缩放,30000x30000的png图片,占用3g+内存,有点无法接受。
于是自己调研相关算法。
以300x300的png为例,正常缩放时,是将其整个读进内存,生成300x300x4的矩阵,然后对矩阵进行缩放,再将缩放后的矩阵写成png。
png读取时,是一行一行读取的,写盘时,也是一行一行写的。这里用 双立方(三次)卷积插值 进行缩放,该算法用临近的16个点(4x4)进行采样。所以一边读,一边缩放,一边写,是可行的!
建立一个4行的缓冲区,每读一行,就放进缓冲区,若缓冲区中的4行可以用来缩放,就进行缩放,将缩放后的数据写进输出流,循环直到所有行读取完毕。
输入:直接复制JDK的PNGImageReader做修改,用1x1的尺寸生成Raster(不会使用这个对象中的缓冲区),修改将像素数据写入Raster的代码,让像素数据写入Resizer。
缩放Resizer:接受读图出来的像素数据,并用 双立方(三次)卷积插值 进行缩放。将缩放后的行,写入输出。
输出:直接复制JDK的PNGIMageWriter做修改,使其支持一行一行写入。
超大图片的缩放算法(撑爆内存的那种)相关推荐
- android 图片缩放算法,Android大图加载,缩放,滑动浏览--SubsamplingScaleImageView 源码分析大图加载...
**************这个开源项目有点大的,也不知道几篇能写完,先根据功能点分析解读********************* 1.写在前面 图片浏览的坑不少,大图加载导致内存溢出的情况相信每个 ...
- 超大图片的显示:BitmapRegionDecoder 1
不少安卓开发者都有图片加载的处理经验,比如通过压缩节省图片加载中对内存的消耗. 我们经常做的是把一张1280之类大小的图片以适应屏幕大小的尺寸展现出来,同时能够通过缩放来观察. 不过这是一般水平,通过 ...
- 基于libyuv库的NV12格式图片的缩放
网上关于使用libyuv库在Linux下对NV12格式进行缩放的教程是在太少了,对于博主这种菜鸡来说简直就是煎熬,因为本人阅读源码的能力实在很差啊!!!但不管怎么样,把这几天所得写下来,希望对大家有帮 ...
- 几个图像缩放算法的比较
几个图像缩放算法的比较 前段时间由于项目的需求,需要实现图像的缩放功能,期间查找了不少关于图像缩放算法的资料,现把自己的心得整理一下. 由于研究生期间没有选修过图像处理方面的课程,所以对图像缩放的原理 ...
- 图像缩放算法(中篇)
图像缩放算法(中篇) ================================= 转载别人的,但是这篇文章写得确实太好了,所以想分享出来. 原文地址:http://blog.chinaunix ...
- 图形图像处理 —— 图像缩放算法
转自:http://blog.chinaunix.net/space.php?uid=22915173&do=blog&id=2185545 摘要:首先给出一个基本的图像缩放算法,然后 ...
- 计算机视觉-图像缩放算法-cuda实现
一.CUDA CUDA是显卡厂商NVIDIA(英伟达)推出的运算平台,能够将数据数据复制到GPU,在GPU中进行计算,然后再返回给CPU端.CUDA将GPU称为设备侧或者Device,将CPU称为Ho ...
- 超大图片、高清切片的图像处理
最近有遇到超大图像处理的需求,图片都是上亿级的,这么大的图像本身就会占用很大内存,一般加载这关都过不了,即使加载成功,图像处理也会耗费很长时间.有没有一种很好的办法解决掉上述问题呢? 我想到的办法就是 ...
- 关于图像快速缩放算法,目前看到的最好的最清晰的一篇文章
昨天开始写一个录制屏幕和声音存储为视频文件的程序,差不多完成了. 屏幕录制使用方法:抓屏(方法很多,BitBlt.DirectX.MirrorDriver等),缩放,X264压缩(开源的,自己封装) ...
- Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】...
Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨 ...
最新文章
- JAVA实现包含main函数的栈问题(《剑指offer》)
- Java基础—序列化关键字transient
- 两种极端情况的案例:N+1次查询和笛卡尔积
- JS DOM事件(常用消息、常用事件、addEventListener、removeEventListener)
- Python爬虫从入门到精通——基本库re的使用:正则表达式
- .htaccess 语法以及应用
- 关于移动端video-player点击播放自动全屏
- Android MediaCodec硬解码H264文件
- 《亡灵序曲》各版本收集
- 怎么扩展服务器内存?
- 同方有云,加速领跑信创新时代
- BUUCTF 每日打卡 2021-4-14
- 电商网站的大数据分析统计平台
- 2021年中级Java面试题
- android推送弹窗,总被安卓通知“骚扰”?只需1招,教你屏蔽各种弹窗通知!
- UNIX文件操作函数open、create、close、lseek简介
- 如何查看某端口对应什么服务?
- 137813-35-5,cyclo(Arg-Gly-Asp-D-Phe-Val)分子式:C26H38N8O7
- PCIE_DMA实例五:基于XILINX XDMA的PCIE高速采集卡
- 下载S1的ROM的地方