如何在 Perl 中获取图象文件的尺寸和文件大小

如何在 Perl 中获取图象文件的尺寸和文件大小,第1张

获取文件大小不需要安装额外的模块,用-s *** 作符即可:

假设文件路径在变量$file_path中,那么$file_size文件大小可以用如下语句获得:

$file_size = -s $file_path;

得到的结果单位为Byte(字节),如果要换算成KB,则将结果除1024,如果要换算成MB,则再除1024,以此类推。

要获取的尺寸,可以用模块 Image::Size

use Image::Size;

my ($globe_x, $globe_y) = imgsize($file_path);

拖拽的过程就不说了,这里主要说一下如何在前端获取到的相关信息。

html5里有一个fileReader的全局变量,用来读取本地文件,比如txt,img等,下面是一个简单的代码。

function checkFile(files){

var file = files[0];

var reader = new FileReader();

// show表示<div id='show'></div>,用来展示预览的

if(!/image\/\w+/test(filetype)){

            showinnerHTML = "请确保文件为图像类型";

            return false;

        }

        // onload是异步 *** 作

readeronload = function(e){

showinnerHTML = '<img src="'+etargetresult+'" alt="img">';

}

readerreadAsDataURL(file);

}

这样就能够在不上传到服务器的前提下预览。当然,这个问题的重点是获取的原始尺寸,html5里还提供了两个变量来获取:naturalWidth和naturalHeight,这两个分别来获取的原始宽度和原始高度。

在上面的例子中,就能通过下面的方式获取到:

var width = etargetnaturalWidth;

var height = etargetnaturalHeight;

还有一种情况就是,如果已经存在页面里的,怎么获取到原始尺寸呢,可以这样:

var img = documentgetElementsByTagName('img')[0]; // 获取到

var width = imgnaturalWidth;

var height = imgnaturalHeight;

1, CvSize cvGetSize( const CvArr arr ) 返回矩阵或图像的行数和列数,如果是图像就返回ROI的大小。

2, void cvGetRawData( const CvArr arr, uchar data, int step=NULL, CvSize roi_size=NULL )添充给输出变量数组的底层信息。所有的输出参数是可选的 , 因此这些指针可设为NULL 如果数组是设置了ROI的 IplImage 结构, ROI参数被返回。

3, CvRect cvGetImageROI( const IplImage image )返回图像ROI 坐标 如果没有ROI则返回矩形值为 cvRect(0,0,image->width,image->height)。

简单方法就是 ActualHeight SacleY还有一个方法稍微麻烦些,就是用 GeneralTransformTransform(Point point),或者TransformBounds大概思路看下面的方法。public Rect GetBounds(FrameworkElement of, FrameworkElement from){// Might throw an exception if of and from are not in the same visual treeGeneralTransform transform = ofTransformToVisual(from);return transformTransformBounds(new Rect(0, 0, ofActualWidth, ofActualHeight));}

大小,是指的像素数?还是指文件的大小?

如果像素数,就是长宽。

如果文件大小,可以用FileInfo类来得到文件大小。

FileInfo fi = new FileInfo("c:\1jpg");

fiLenght 就是这个文件的大小。

这个FileInfo类还可以得到很多其他的文件属性,如是否只读等。

2楼用打开文件来得到文件大小,很不必要。

获得文件大小大概有两种解决方法:

(一)使用documentgetElementById或者documentcreateElement的或者var img=new Image();

然后在onreadystatechange事件里检查大小

但这种代码通用性不强浏览器兼容存在问题一直无法解决

(二)使用FSO控件,但这样存在安全问题

<div id="photoyn"><input id="file1" type="file" onchange="ShowSize(thisvalue)" />

<script type="text/javascript">

function ShowSize(files){

var fso,f;

fso=new ActiveXObject("ScriptingFileSystemObject");

f=fsoGetFile(files);

var mySize = fsize/1024;

alert(mySize+" K ");

var myName = fName;

var myPath = fPath;

var myDrive = fDrive;

var myType = ftype;

var myAttributes = fAttributes;

var myDateCreated = fDateCreated;

}

</script>

所以说要在客户端检测文件大小没有实现方法。

最终解决方案还是在服务器端检测,在上传的过程中,在服务器的内存中进行判断并返回信息给客户端。

以上就是关于如何在 Perl 中获取图象文件的尺寸和文件大小全部的内容,包括:如何在 Perl 中获取图象文件的尺寸和文件大小、html5拖拽图片上传,怎么获得图片原始尺寸、opencv怎样获得图片文件大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10129096.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存