精华内容
下载资源
问答
  • 我通过哪里去调节这个大小的比例和显示亮的程度,辐射的区域呢? 官网类似这种链接是:http://echarts.baidu.com/demo.html#map-polygon 我觉得主要问题是我应该修改这里: series : [ { name: 'pm2.5', type: '...
  • 图片背景缩放大小 人物图片 也能按比例缩放 的同时 xy位置需要保持  就像PS里面 两个矩形图层选中 再调整他两大小 能保持位置 和缩放  <p><br /> 目前的操作 遍历所有人物 一张一张图片的缩放 由于缩放图片 ...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼随着逐浪CMS新版的一些效果逐渐放出,有不少的朋友想全屏的背景图片如何设计。在不同的时代有不同的流行网站显示形式,当前很流行的一种网页形式就是满屏大图,本文将用...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    549fa5a21a9e4e4198defdf9dfcc9ca0.png

    随着逐浪CMS新版的一些效果逐渐放出,有不少的朋友想全屏的背景图片如何设计。

    在不同的时代有不同的流行网站显示形式,当前很流行的一种网页形式就是满屏大图,本文将用最简单的方式实现该效果。用到了CSS 属性background-size ,无需javascript。

    先看demo,打开后,调整浏览器窗口大小,观察背景图的变化。

    如果在你的项目中也需要这样的效果,那么你就来对地方了。

    基本语法:

    .css{ background-image:url("wood.jpg");background-size:cover;background-repeat: no-repeat;background-attachment: fixed;}核心概念

    使用background-size 属性,填充整个viewport

    当css属性background-size 值为cover时,浏览器会自动按比例缩放背景图的宽和高,直到大于或等于viewport的宽和高

    使用媒体查询为移动设备提供更小尺寸的背景图

    为什么要给移动设备提供小尺寸背景图呢?在demo中,我们看到的背景图的实际尺寸为5498px * 3615px,使用这么大尺寸图片的目的是满足绝大多数宽屏显示器,并且不会显示模糊,而代价就是1.7MB的图片体积。

    但是在移动设备上没有必要使用这么大的图片,同时大图还会导致加载变慢,尤其是在移动网络下。

    需要说明的是:为移动设备提供小背景图对该技术方案来说是可选的。

    实践

    HTML

    后面我们会给body标签指定背景图,这样背景图就可以填充整个浏览器viewport了。

    其实,该方案对所有的块级容器都可以生效。如果你的块级容器的宽高是动态的,那么背景图将自动伸缩,充满整个容器。

    CSS body标签的样式如下:

    body {/* 加载背景图 */background-image: url(images/background-photo.jpg);/* 背景图垂直、水平均居中 */background-position: center center;/* 背景图不平铺 */background-repeat: no-repeat;/* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */background-attachment: fixed;/* 让背景图基于容器大小伸缩 */background-size: cover;/* 设置背景颜色,背景图加载过程中会显示背景色 */background-color: #464646;}

    上面最重要的一条就是:

    background-size: cover;

    这样浏览器就会按比例缩放背景图直至背景图宽高不小于容器的宽高(在上面的例子中,就是body标签)。

    这里需要注意的一点就是:如果背景图小于body标签的尺寸(例如在高分辨率显示器上,或页面内容特别多时),浏览器会拉伸图片。我们都知道,当把一个图片拉伸时,图片会变模糊。

    因此,在选择背景图时,要特别注意尺寸。为了照顾到大尺寸屏幕,demo里用的图片尺寸为5498px * 3615px 。

    同时,为了让背景图始终相对于viewport居中,我们声明了:

    background-position: center center;

    上面的规则会把背景图缩放的原点定位到viewport的中心。

    接下来我们需要解决的问题是:当内容的高度大于viewport的高度时,会出现滚动条。我们希望背景图始终相对于viewport固定,即使用户滚动时也是一样。

    解决办法就是:

    background-attachment: fixed;(可选)使用媒体查询应对小屏幕

    为了应对小屏幕,我用photoshop将背景图按比例缩放到768px * 505px,然后通过smush.it 压缩图片体积。这样就将图片体积从1741KB降到114KB,节省了93%。

    下面是媒体查询的写法:

    @media only screen and (max-width: 767px) { body { background-image: url(images/background-photo-mobile-devices.jpg); }}

    上面的媒体查询将max-width: 767px 设为断点,也就是说当浏览器viewport大于767px时,会使用大背景图,反之使用小背景图。

    使用上面媒体查询不利的一面是,如果你把浏览器窗口从1200px缩小到640px(反之亦然),你会看到一个短暂的闪烁,因为小背景图或大背景图正在加载。

    展开全文
  • 图片怎么批量修改尺寸

    千次阅读 热门讨论 2018-12-13 17:07:45
    有时候我们做网页,需要代码来实现,这样调整图片大小不是很方便,我们一般采用直接修改图片大小的方式,那么怎样修改图片的大小讷。如图几张图片要改为一样大小的。 采用美图秀秀,可以批量进行操作。 电脑下载...

    有时候我们做网页,需要代码来实现,这样调整图片大小不是很方便,我们一般采用直接修改图片大小的方式,那么怎样修改图片的大小讷。如图几张图片要改为一样大小的。

    采用美图秀秀,可以批量进行操作。

    电脑下载美图秀秀后,点击批处理。

    点击添加多张图片:

    进行设置,如下图:先选中修改尺寸,点击保持原图比例,设置适宜的宽度和高度 (格式也可以更改格式啊。)保存即可。

     

    展开全文
  • 如何新增图片模块、如何更换原有的图片、如何线上调整图片的尺寸或者编辑图片、如何为图片添加链接、如何为图片模块添加边框背景等等提示:,每张图的大小不超过512KB(一般网页图片,小图40KB、大图100KB已经非常...

    如何新增图片模块、如何更换原有的图片、如何线上调整图片的尺寸或者编辑图片、如何为图片添加链接、如何为图片模块添加边框背景等等提示:,每张图的大小不超过512KB(一般网页图片,小图40KB、大图100KB已经非常清晰);上传前,请根据个人需要先调节好图片的尺寸比例(如正方形图1:1,长方形图3:2或者4:3或其它比例)以节省时间。请不要删除正在使用的任何一张图片,否则可能会造成页面模块无法显示等现象。

    1. 添加图片模块--给网页添加一张图片首先,点击页面左上角“添加”, 在弹出功能条中选择“图片”并拖至页面中的任意位置:

    fdd96b3fc6cf9a2a3537268c203158a5.png

    松手,该模块添加成功,后续仍可以鼠标拖动该模块进行任意移动。松手后,系统会自动弹出图片选择界面:

    e1e70eea6d2f4e6094a6a235b45a3a5f.png

    db7c300fc1b4a916e1d106b7bc1c92af.png

    您可以选择上传文件(图片大小倾控制在512kb内)或者使用互联网上的图片url地址(注意:如果使用互联网图片,系统会自动在“我的图片”处保留一个副本,届时也可以选择直接使用保存好的图片而放弃URL链接(URL链接方式的弊端:如果对方网页撤除这个图片,自己的网页上将无法显示,因这个URL链接已经不再存在))。

    图片类型较多时,可以创建图片类型的分类,方便管理:

    a3232080879d41d2bc2864132dcf3732.png

    2. 替换现有模板中的图片

    如果喜欢模板中原有的布局,可以直接将模板中的某个图片替换成自己的图片以节省设计时间。(注意:请调整自己的图片尺寸比例以配合本身设计的比例)替换的步骤:1)双击图片或者单击图片后点击该图片的“属性”,系统弹出“图片设置”的菜单

    080d49cc29637b41ba1594a38bb4f73e.png

    点击“更换图片”, 系统会弹出图片文件管理器, 然后选择新的图片进行替换即可,步骤与上面提及的“添加新的图片模块”是一致的。

    3. 直接在页面上调整图片尺寸页面调整分为两种:缩放模式和裁剪模式,这两种模式可以通过点击该功能标互换

    c1202a197c0f549332818f40057fe8d2.png以及

    9605124ed174ac3932c0996b77d73531.png

    缩放模式:整图缩放,类似放大镜的功能,但处理不当,可能出现压缩的情况。此功能并不改变系统中已保存的图的大小尺寸,仅在显示的部分上作出调整,仍可以通过恢复高或宽度来恢复到原图的样子图片上传成功并显示在网页上, 我们可以通过拖动图片模块的右下角边线来调整图片的显示的尺寸。页面上直接调整大小可能会造成图片被挤压。为达到最好的图片展示效果,建议上传前先调整好图片的尺寸和比例。裁剪模式:固定图片的一边,减少显示的部分。此功能并不改变系统中已保存的图的大小尺寸,仅在显示的部分上作出调整,仍可以通过恢复高或宽度来恢复到原图的样子

    4. 编辑图片并修改原图我们为建站使用者提供了一套图片编辑插件, 在这里您只需要简单的操作, 即可对自己已经上传并添加至页面上的图片进行编辑, 而无需使用专业化的图片编辑软件, 鼠标选中图片模块并点击模块上方“图片编辑”功能按钮。系统会弹出下面界面:

    207de116cfdc8e4926955ae809d21521.png

    f4c2ea1351e217c399135960aea62d16.png

    图片编辑功能, 预设有美化图片、人像美容、拼图、动画再功能,每种功能有不同效果。具体的每项功能, 您可以在实践中慢慢体会。请记得每做一次调整,必须点击“应用”再进行下一步的调整或者编辑。

    5. 给图片建立一个链接双击图片或点击图片上的属性功能按钮, 系统弹出图片设置对话框, 可以点击设置链接按钮选择链接到:网址、页面、邮件、文件等您需要的的地方。

    338e904f60321c8c4752b874f641f132.png

    10a363df5d8f8addb9250f99d06f6cde.png

    “页面”:如图,可以跳转到您网站的指定页面:

    0299f5c25b5a98b312245acf49e4443a.png

    “站外链接”:是指可以将图片链接到互联网上的某个页面或某个站点, 只要您把地址填进去即可。如下图,以www.google.com为例,勾选“在新窗口打开链接”可以在新增的选项卡中打开www.google.com的页面

    b0170a6d45c9feea18a8ab7dec950d34.png

    “文件”:是指可以将图片链接到您已上传在“我的文件”中的文件(如jpg,pdf,word,mp3等等)。当点击该图片时,系统会调用访客本地电脑的相关程序并打开相应的文件。注意:如果访客本地客户端没有可以支持的软件或者版本不支持,将无法打开这个文件。添加的方式如下图:选择好文件后确定,再保存即可。

    ae07d89b27b10ce1d03f03dc1667f874.png

    6.为图片模块添加边框背景等在图片“属性”的设置界面的下半部分,有5个主要的功能:图片说明、图片模块边框、常用、图片模块背景和页脚元素。

    e926b73a8bb62c440f6127dc5fe45c59.png

    1)图片说明:当设置了图片说明后,访客鼠标放在该图上就会自动显示说明的内容。如图测试图片:

    04c0cdb7e2448c80f2057a95365d38b4.png

    9d3fbb20274780932581945c1dd3879f.png

    2)模块边框:我们可以为每个图片设置边框,而边框也可以选择线条类型、粗细程度和线条颜色,这个和word中表格是类似的。现在来看看设置和设置后的效果(左图为设置,右图是效果)

    e0d7c80e1dc6f7c1f6fa6eb58d6fb1e2.png

    1a67f01492ad77d721e58cf906b41612.png

    当然,如果您不喜欢方正的边角,还可以对模块进行圆角显示的设置。假设把圆角数值设为26,来看看右图的效果,对比上图:

    99b3229fd170ee90277bed00a64b4cbd.png

    a921e71153d6975ff2ab7d48afaefe4c.png

    3)常用:点击“常用”进入另外一个设置界面,这里沿用了上图的设置填充:在真实图片和边框之间加入空隙位置,一般会缩小图片的比例;边框:我们可以看到“边框”数值是10,事实上,只要我们不在这个位置做调整,系统会默认刚才在“边框”页面所做的设置。但如果要统一四条边线的磅数,可以直接在这里对4条边一起调整;透明:指这个图片的清晰程度,如果数值越高,意味着越透明;旋转:图片相对于页面的角度,可以为0-359°。中下位置是预览图。

    b82fb48fc1f63741cd267284d8485605.png

    4)背景:为达到明显的效果,我们将该图的透明度调回0,并且将填充值调大,然后添加一个背景。背景可以为一张图片,也可以是颜色的简单填充。如果选择使用背景颜色,就会简单得多,不需要设置位置对齐等等。注意:如果同时添加了图片背景和颜色背景,必须移除了图片背景后颜色背景方可生效。

    91969c0ac268711441cf016ebd77be31.png

    8a04eda0d427e166f625f46074455a11.png

    如果选择使用图片,则:点击“更改背景”,从“我的图片”中选择对应的图片后即可直接生效;点击“移除背景”将会删除该背景;勾选“固定背景”则无论图片尺寸多少,该背景相对于模块的位置不变;左下角可以设置背景重复和对齐位置。

    7. 图片模块的其它注意事项如其它模块一样,图片模块可以放置在页脚,仅需勾选“页脚元素”后,将编辑设置好的图片拖至已有的页脚中即可;图片模块的边框大小必须大于或者等于图片的高宽大小,否则无法正常显示整张图片;网站中的所有模块都有层次的概念,当一个模块被另外一个模块的框遮住的时候(可能只是框遮住,但仍能够看见),底层的框中的链接等都会无法点选。

    展开全文
  • http://blog.csdn.net/majinlei121/article/details/46372887引文Photoshop 的图像黑白调整功能,是通过对红、黄、绿、青、蓝和洋红等6种颜色的比例调节来完成的。这个是一直都知道,还经常使用的。但是不清楚它是...

    参考:

    http://blog.csdn.net/matrix_space/article/details/22992833
    http://blog.csdn.net/majinlei121/article/details/46372887


    引文

    Photoshop 的图像黑白调整功能,是通过对红、黄、绿、青、蓝和洋红等6种颜色的比例调节来完成的。这个是一直都知道,还经常使用的。但是不清楚它是怎么计算的。

    后来,从博文http://blog.csdn.net/matrix_space/article/details/22992833
    中找到Photoshop 图像黑白调整功能的计算公式:

    gray= (max - mid) * ratio_max + (mid - min) * ratio_max_mid + min

    但是,用不了啊用不了,不是java版的,而我最终要用到Android中。当时为了赶时间,直接用了平均值算法,那效果实在不给力,于是又换了系统自带的过滤器,效果也一般。现在闲暇了,于是,将这个算法用java实现一下。


    正文

    黑白调节计算公式解说

    ps通过对红、黄、绿、青、蓝和洋红等6种颜色的比例来黑白化图片:

    gray= (max - mid) * ratio_max + (mid - min) * ratio_max_mid + min

    gray :像素的灰度值,不是真的灰色哈。
    max : 像素点R、G、B三色中的最大者
    mid:像素点R、G、B三色中的中间者
    min:像素点R、G、B三色中的最小者
    ratio_max:最大的颜色所占比率
    ratio_max_mid:最大的颜色和中间颜色所占的比率

    这六种颜色在ps中默认比例为:

    redRadio = 40%;
    yellowRadio = 60%;
    greenRadio = 40%;
    cyanRadio = 60%;
    blueRadio = 20%;
    magentaRadio =80%;

    为了验证这一点,我打开ps:

    这里写图片描述

    可以看到,的确如此

    并且这个数值是可以调整的,在ps中可以通过调节这几个数值,达到理想的去色效果。

    java中的实现效果

    奋战了许久,我用java来实现了这个算法,其效果如下。

    原图:

    这里写图片描述

    java黑白化后:

    这里写图片描述

    Photoshop黑白化后:

    这里写图片描述

    很像,简直一模一样了,连大小都一样了。不过,大小自然也可能不一样,因为ps直接保存会存储一些图片元数据,同时底层的处理可能也有所不同。

    实现代码

    废话不多说,以下是初次的实现代码:

    封装工具类

    package date1114.图片;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.imageio.ImageIO;
    
    public class ImageUtil {
    
        //这个方法就拿来保存,测试效果一下
        public static void save(BufferedImage image,String path) {
            try {
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYYMMddHHmmssSSS");
                String imageFormat;
    
                int type = image.getType();
                switch (type) {
                case BufferedImage.TYPE_4BYTE_ABGR:
                case BufferedImage.TYPE_4BYTE_ABGR_PRE:
                     imageFormat = "png";
                    break;
                case BufferedImage.TYPE_INT_ARGB:
                case BufferedImage.TYPE_INT_ARGB_PRE:
                    imageFormat = "bmp";
                    break;
                default:
                    imageFormat = "jpg";
                    break;
                }
                String date = simpleDateFormat.format(new Date());
                ImageIO.write(image,imageFormat , new File(path+"_"+date+"."+imageFormat));
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
    
        /**
         * Photoshop 黑白算法,默认效果
         * @param image 
         * @return 新的黑白化图片
         */
        public static BufferedImage createBlackWhiteImage(BufferedImage image) {
            return createBlackWhiteImage(image, null);
        }
    
        /**
         * Photoshop 黑白算法,默认效果
         * @param image
         * @radios 颜色通道配置,依次为红、黄、 绿、 青、 蓝、紫六个通道
         * @return 新的黑白化图片
         */
        public static BufferedImage createBlackWhiteImage(BufferedImage image,float[] radios) {
            int width = image.getWidth();   //获取位图的宽
            int height = image.getHeight();  //获取位图的高
    
            BufferedImage result = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
            int alpha = 0xff000000;
            int r = 0;
            int g = 0;
            int b = 0;
            int max = 0;
            int min = 0;
            int mid = 0;
            int gray = 0;
    
            float radioMax = 0;
            float radioMaxMid = 0;
    
            if (radios == null) {
                //                    红        黄         绿         青         蓝        紫
                radios = new float[]{0.4f,0.6f,0.4f,0.6f,0.2f,0.8f};
            }   
            for (int i = 0; i < width; i++) {//一列列扫描
                for (int j = 0; j < height; j++) {
    
                    gray = image.getRGB(i, j);
    
                    alpha = gray >>> 24;
                    r = (gray>>16) & 0x000000ff;
                    g = (gray >> 8) & 0x000000ff;
                    b = gray & 0x000000ff;
    
                    if (r >= g && r>=b) {
                        max = r;
                        radioMax = radios[0];
                    }
                    if (g>= r && g>=b) {
                        max = g;
                        radioMax = radios[2]; 
                    }
                    if (b >= r && b>=g) {
                        max = b;
                        radioMax = radios[4];
                    }
    
    
                    if (r<=g && r<=b) { // g+ b = cyan 青色
                        min = r;
                        radioMaxMid = radios[3];
                    }
    
                    if (b <= r && b<=g) {//r+g = yellow 黄色
                        min = b;
                        radioMaxMid = radios[1];
                    }
                    if (g <= r && g<=b) {//r+b = m 洋红
                        min = g;
                        radioMaxMid = radios[5];
                    }
    
                    mid = r + g + b-max -min;
    
    //              公式:gray= (max - mid) * ratio_max + (mid - min) * ratio_max_mid + min
    
                    gray = (int) ((max - mid) * radioMax + (mid - min) * radioMaxMid + min);
    
                    gray = (alpha << 24) | (gray << 16) | (gray << 8) | gray;
    
                    result.setRGB(i, j, gray);
                }
    
            }
    
            return result;
        }
    
    }
    

    调用和测试:

    package date1114.图片;
    
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.net.URL;
    
    import javax.imageio.ImageIO;
    
    public class Test {
    
    public static void main(String[] args) {
        String url = "https://img-blog.csdn.net/20171114193050621";
        try {
            BufferedImage colorImage = ImageIO.read(new URL(url));
            ImageUtil.save(colorImage, "color");
    
    
            BufferedImage grayImage = ImageUtil.createBlackWhiteImage(colorImage);
            ImageUtil.save(grayImage, "gray");
    
        } catch (IOException e) {
    
            e.printStackTrace();
        }
    }   
    }
    

    运行,效果就出来了。这里,我使用网络图片:https://img-blog.csdn.net/20171114193050621 进行处理,这个http地址其实就是本文彩虹色环的url地址。

    性能优化

    隔了两天,发现上述的代码似乎有优化的空间。

    我在本地磁盘选取了一张4096*4096的大图进行黑白化,多次进行测试,处理时间在2800毫秒上下浮动。

    于是考虑是否因为代码在循环体中使用bufferImage进行了颜色的修改从而导致性能降低,也就是怀疑循环体中的这段代码:

    for(){
    for(){
    //...
    result.setRGB(i, j, gray);//BufferImage设置像素点颜色
    //...

    那么,转换为像素数组来进行计算,效率会不会更高一些?

    从流中读取所有像素点:

    int[] pixels = image.getRGB(0, 0, width,height, null, 0, width);

    在这时候还是挺忐忑的,因为看这个读取像素的方法,其实现可能用了循环(印象中操作流时,总是循环的),搞不好性能又低下了。

    得到像素数组后,逐行或逐列扫描将每一个像素点变灰。于是将result.setRGB(i, j, gray);//BufferImage替换为:

      //result.setRGB(i, j, gray);
      pixels[j*width+i] = gray;
    

    最后,循环结束,将像素数组转换为BufferImage流:

    result.setRGB(0, 0, width, height, pixels, 0, width);

    运行,咦,耗时降低了,在2600毫秒上下。提升不明显啊,或许从流中读取像素点也耗了一些时间?(为什么这样想?在多次循环中,优化性能可以从不做复杂的操作,避免创建多个对象,声明多个引用等方面来考虑,于是对象有了克隆,循环体中的变量可以在循环外部声明等。而这里,多次从流这个复杂对象读取东西,感觉不妙,不知道它底层是怎么读的,或许就有循环,耗时操作。况且,都拿到像素数组,直接从数组中读取色彩就o了)

    改:

    
    //              gray = image.getRGB(i, j);
                    gray = pixels[j*width+i]; 

    一运行,咦,这回居然只要1600毫秒,比未优化前少了整整1.2秒钟。

    几乎算大功告成了吧。感觉是的。

    以下是优化后的所有代码:

    package date1114.Photoshop图片黑白化算法;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.imageio.ImageIO;
    
    public class ImageUtil {
    
        //这个方法就拿来保存,测试效果一下
        public static void save(BufferedImage image,String path) {
            try {
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYYMMddHHmmssSSS");
                String imageFormat;
    
                int type = image.getType();
                switch (type) {
                case BufferedImage.TYPE_4BYTE_ABGR:
                case BufferedImage.TYPE_4BYTE_ABGR_PRE:
                     imageFormat = "png";
                    break;
                case BufferedImage.TYPE_INT_ARGB:
                case BufferedImage.TYPE_INT_ARGB_PRE:
                    imageFormat = "bmp";
                    break;
                default:
                    imageFormat = "jpg";
                    break;
                }
                String date = simpleDateFormat.format(new Date());
                ImageIO.write(image,imageFormat , new File(path+"_"+date+"."+imageFormat));
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
    
    
    
        /**
         * Photoshop 黑白算法,默认效果
         * @param image 
         * @return 新的黑白化图片
         */
        public static BufferedImage createBlackWhiteImage(BufferedImage image) {
            return createBlackWhiteImage(image, null);
        }
    
        /**
         * Photoshop 黑白算法,默认效果
         * @param image
         * @radios 颜色通道配置,依次为红、黄、 绿、 青、 蓝、紫六个通道
         * @return 新的黑白化图片
         */
        public static BufferedImage createBlackWhiteImage(BufferedImage image,float[] radios) {
            int width = image.getWidth();   //获取位图的宽
            int height = image.getHeight();  //获取位图的高
    
            int alpha = 0;
            int r = 0;
            int g = 0;
            int b = 0;
            int max = 0;
            int min = 0;
            int mid = 0;
            int gray = 0;
    
            float radioMax = 0;
            float radioMaxMid = 0;
    
            if (radios == null) {
                //                    红        黄         绿         青         蓝        紫
                radios = new float[]{0.4f,0.6f,0.4f,0.6f,0.2f,0.8f};
            }
    
            //int[] pixels = new int[width*height];
            int[] pixels = image.getRGB(0, 0, width,height, null, 0, width);
    
    //      BufferedImage result = new BufferedImage(width, height, image.getType());
            for (int i = 0; i < width; i++) {//一列列扫描
                for (int j = 0; j < height; j++) {
    
    //              gray = image.getRGB(i, j);
                    gray = pixels[j*width+i]; 
    
    
                    alpha = gray >>> 24;
                    r = (gray>>16) & 0x000000ff;
                    g = (gray >> 8) & 0x000000ff;
                    b = gray & 0x000000ff;
    
                    if (r >= g && r>=b) {
                        max = r;
                        radioMax = radios[0];
                    }
                    if (g>= r && g>=b) {
                        max = g;
                        radioMax = radios[2]; 
                    }
                    if (b >= r && b>=g) {
                        max = b;
                        radioMax = radios[4];
                    }
    
    
                    if (r<=g && r<=b) { // g+ b = cyan 青色
                        min = r;
                        radioMaxMid = radios[3];
                    }
    
                    if (b <= r && b<=g) {//r+g = yellow 黄色
                        min = b;
                        radioMaxMid = radios[1];
                    }
                    if (g <= r && g<=b) {//r+b = m 洋红
                        min = g;
                        radioMaxMid = radios[5];
                    }
    
                    mid = r + g + b-max -min;
    
    //              公式:gray= (max - mid) * ratio_max + (mid - min) * ratio_max_mid + min
    
                    gray = (int) ((max - mid) * radioMax + (mid - min) * radioMaxMid + min);
                    gray = (alpha << 24) | (gray << 16) | (gray << 8) | gray;
    
    
    //                result.setRGB(i, j, gray);
                    pixels[j*width+i] = gray;
    
                }
    
            }
            BufferedImage result = new BufferedImage(width, height, image.getType());
            result.setRGB(0, 0, width, height, pixels, 0, width);
            return result;
        }
    
    }
    
    

    测试代码:

    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    public class Test {
    
    public static void main(String[] args) {
        String url = "D:/abc/a.jpg";
        try {
            BufferedImage colorImage = ImageIO.read(new File(url));
            ImageUtil.save(colorImage, "color");
    
            long time = System.currentTimeMillis();
            BufferedImage grayImage = ImageUtil.createBlackWhiteImage(colorImage);
            System.out.println(System.currentTimeMillis()-time);
            ImageUtil.save(grayImage, "gray");
    
        } catch (IOException e) {
    
            e.printStackTrace();
        }
    }   
    }
    

    ps:

    虽然优化完成,但是鉴于安卓bitmap.getPixel() 与 bitmap.setPixel() 导致特别耗时的现象,我有些些怀疑bufferedImage.getRGB()与bufferedImage.getRGB() 也可能存在一定程度上的过度耗时现象,或许不如直接使用像素数组来的快,这个就留待以后研究了。


    下一篇将实现Android中的黑白化。其原理一样一样的,只是安卓中使用的是Bitmap:

    http://blog.csdn.net/Mingyueyixi/article/details/78638495

    安卓和pc端比较,安卓完败。同样的图片,同样的4096*4096像素,类似的实现过程,安卓却用了20秒!喷血了——这是在未优化之前的结果。

    ——end

    展开全文
  • 在这个div里面我有一个图像所以结构 因此,当用户调整div大小时,图像也需要按比例调整大小.它不会被拉伸.我怎么能这样做?注意:我写了代码,用于在用户输入宽度和高度后调整div的大小.所以我实际上尝试在div调整大小...
  • 如果UI问你“这个图片你要多大尺寸的?”,你该怎么回答呢? 为了不让图片因拉伸或压缩而...再次强调一下,图片比例一定要精确! 以下是iOS手机常用的尺寸: 图片摘自这里 接下来是方法处理: -...
  • 应该怎么调整才能让它们大小一致呢? 首先分析下可能出现的几种情况场景: 1、最常见的就是直接将多张图片拖入PDF软件,由于原来图片本身就大小不一样(可以通过图片的实际像素尺寸比例判断),那这样合成的PDF...
  • PDF是我们常用的文件格式,尤其是日常办公当中,PDF是用次数也是很多,但是有时通过图片直接生成PDF打开看起来很正常,但是打印后却被放大到失真,而且超过A4纸大小,是怎么回事呢? 这种情况一般是因为一般PDF打开...
  • 图片缩放不占内存

    2013-03-21 14:27:21
    图片先不读进内存,获取图片的宽高,调整好后,再设置成false     原理如下:   安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法:  方法1:按固定比例进行缩放
  • 1、关于画图: 用pROC包画ROC曲线的时候,有时候坐标很奇怪,往左或者往上偏了,不是在...根据图的实际情况选择保存的尺寸比例,不知道怎么设置,就保存为调整好的当前视图所设置的尺寸比例。 再将PDF用Adobe Photosh
  • 从本地相册获取的一个图片,进行正方形裁剪后,在用遮罩方式变成圆形,怎么调整生成圆形之后的圆形图片的大小。 下面是主要代码 /** * 裁剪图片方法实现 * * @param uri */ public void ...
  • detector该怎么重写,里面哪些参数需要调整?谢谢。代码如下 ``` #include #include #include #include #include #include #include using namespace std; using namespace cv; #define ...
  • 调整后,代码可以运行,然而并未按照预先设定的Batchsize进行训练,而是直接以划分的整体比例进行训练,想请问下这是怎么回事?已经输入BS到batch_size的参数了 ![图片说明]...
  • 新增 ArcGis 地图比例尺控件相机工具的优化 2.0.4 降低模块之间的耦合性ArcGisMap 工具的优化 2.0.3 更新扫描二维码 Demo更新日期选择 Dialog 2.0.2 更新支付宝 SDK,新增支付宝支付 DEMO 更新相机工具 ...
  • 前言 在我们拍摄完一张照片后,...下面给大家介绍怎么集成Image kit的图片裁剪能力: 编辑调整服务,图片裁剪服务的所有接口的实现都是基于CropLayoutView,是一个自定义View,import的包名为com.huawei.hms.image.vi
  • 以下坐标系,看起来有点乱,没有着手的方向,但是看第二张图片就可以明白一些该怎么弄。 是比例尺的问题。 我们可以根据以下图片调整以上图片参数, 按以上图片参数调整后进行投影变换的坐标好像正确了,...
  • 怎么转换才能让保存的PDF图片可铺满整个页面呢? 首先我们要进行分辨确实是PDF文档页面尺寸不对,两侧或上下有空白,还是我们打开PDF的页面比例不对呢?可以将PDF的页面比例调整到100%也就是实际大小再查看,如果...
  • Cocos2d-x的学习之旅(六)输入框

    千次阅读 2015-06-17 00:38:06
    不管你怎么调它都会按照这个比例调整。所有我们才要把输入框文字和输入框背景分开。 关于为什么输入框文字不管怎么设置的大小都改变不了的情况。我真不知道,哈哈哈!!!!,如果知道的小伙伴欢迎告诉我,但我知道...
  • 3d效果web画图控件 v1.2

    2008-12-10 11:45:28
    3 在数据源有一定的相似性前提下,系统自动调整图片缩放比例; 4 数据设置,合理数据(20,45,34,27,65). 不合理数据(0.1,8000,0.2,9392); 5 控件免费使用.开发环境asp.net VS2005 C# .net 2.0 控件版本V1.2; 6 如果...
  • 文章目录手写 Promise 上手写 Promise 下async await 全解 手写 Promise 上 面试答题方法论: 该技术要解决什么问题–why 该技术是怎么解决这个问题...如下图所示,该代码用 Node.js 实现了调整文件夹中图片的宽高比例
  • 2.尝试提供这样一种方案,使得宽度与屏幕等宽,布局大体与1类似,并且保证你无论怎么调整浏览器的宽度,都可以保证中间部分布局相对宽度不变化,且格子间的间距均为10px 题目1很简单,有许多种解决方案,我就不一一...
  • “固定比例”建议选择,以为这个选项可以保证你在修改宽度的同时,系统自动按照图片原来的比例调节高度,不会让图象失真。“过渡色”则可选可不选,选择过渡色,图象会更自然些,但是以后使用的颜色也会相应的增加;...
  • 所以我想调整大小(保持比例),然后将图像剪切到我想要的大小。我可以用html background-image属性调整大小,我可以用200x100剪切。我怎么能两个都做?例:这个图片:有尺寸background-image像素我想显示像200x100...
  • 很简单,就是以字符本身黑色点在空间中所占的比例来替代图片的灰度值。 想象一下:在一个空间有限的白色正方形中掷点,只掷一个点跟掷成千上万个点,宏观上带给我们的视觉认知是不一样的——前者我们更倾向于认为是...
  • 虽然每一页pdf上显示的图片是相同的,但我们通过调整图片的位置,产生了分页的错觉。以第二页为例,将竖直方向上的偏移设置为-841.89即一张a4纸的高度,又因为超过a4纸高度范围的图片不显示,所以第二页显示了图片...
  • * 至于下面这个Intent的ACTION是怎么知道的,大家可以看下自己路径下的如下网页 * yourself_sdk_path/docs/reference/android/content/Intent.html * 直接在里面Ctrl+F搜:CROP ,之前没仔细看过,其实...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

图片比例怎么调整