Introduction
智能电话在我们的生活中越来越像是标配了,它方便和简化了日常生活的大部分内容,各种新应用正陆续开拓、延伸沟通的疆界与触角。
智能电话浏览照片常常发觉照片的尺寸不匹配屏幕,上下黑边范围过大,照片被挤压在中间很窄的区域,这样的浏览感受并不舒服。那么,开贴论述【1】多大Size的图片适宜在智能电话当中打开与浏览?【2】以及不同Size的图片怎样才能转换为这类适宜的尺寸?
以我的电话“和M812 C4安卓智能手机”为例,主要参数:5.5英寸屏幕;分辨率为1280×720像素。这里就已经说明1280(H)×720(W)是屏幕的最佳显示尺寸,这就是【1】的答案,这也表明电话屏幕显示比例是为16:9。问题【2】的转换需要借助编程工具,这里使用Matlab软件。
代码处理图片分为2种情况:A原始图片尺寸小于1280(H)×720(W)的情况,图片按照16:9比例进行裁剪,保持H不变,W进行适当的调整,参考函数SmallOne,编辑结果如图1,这张图片在手机中能够充满手机屏幕,不会出现明显的由于图片尺寸不符引起的屏幕空白。
图 1
第2种情况指向H与W都大于标准尺寸,这类图片有两种调整方法,参考函数LargeOne:其一,仍然保持H不变,以标准尺寸提取图片核心部分,返回一张标准尺寸的图片,如图 2;其二,将图片转置H变为W后,按照之前的方法再提取图片的核心部分,如图 3,这种图片适合手机横向情况下浏览图片,效果很好。
图 2
图片人物是克里米亚总检察长Natalia Poklonskaya女士。
第二版
在LargeOne函数添加图片伸缩参数,相应地,主程序调用也有调整。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | % Created by LI Xu % Version 1.0 % 10 May, 2016 clear; clc; % Input Image inpath='p4.png'; % Check the size of input image info=imfinfo(inpath); height=info.Height; width=info.Width; stdhgt=1280; stdwdh=720; imscale=1; if height<stdhgt || width<stdwdh disp(['This input image size is smaller than the Standard ', ... num2str(stdhgt), ' * ', num2str(stdwdh), '.']); newimg=SmallOne(inpath, stdhgt./stdwdh, 0.13); else disp(['This is a larger one.']); newimg=LargeOne(inpath, imscale, [stdhgt, stdwdh], [ .05, .35]); end otname=strsplit(inpath, '.'); otname=otname{1}; otname=[otname, '_new.png']; pause(3); imwrite(newimg, otname); close all; disp('**************************************************'); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | % Created by LI Xu % Version 1.0 % 10 May, 2016 function newimg=LargeOne(path, imscale, stdsize, stscale) img=imread(path); img=imresize(img, imscale); [row, col, ~]=size(img); rowscale=stscale(1); colscale=stscale(2); strow=rowscale*row; stcol=colscale*col; stdow=stdsize(1); stdcol=stdsize(2); newimg=img(strow:strow+stdow-1, stcol:stcol+stdcol-1, :); imshow(uint8(newimg)); end |
No comments:
Post a Comment