php如何获取flash的尺寸的详细数据

 更新时间:2016年11月25日 16:56  点击:1567
有时我们的网站需要获取flash文件的尺寸信息,php有一个内置的函数可以实现,这个函数就是getimagesize,他可以返回图像的尺寸及文件类型的一个数组。

如果你还想着通过解析swf文件头信息来获取flash文件的尺寸信息,那真的有点走远了。因为从PHP 4开始已经内置getimagesize函数来做这个事。其功能测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。而且从PHP 4.0.5起还支持参数是一个url。例如:

print_r(getimagesize('http://www.google.com.hk/images/srpr/logo4w.png'));

输出的结果为:

Array
(
    [0] => 550
    [1] => 190
    [2] => 3
    [3] => width="550" height="190"
    [bits] => 8
    [mime] => image/png
)


感觉getimagesize还是很强大的,各种图像类型的文件都可以操作,越来越喜欢php了。

本文,你将会了解到10个最佳的php图形操作库,它们可以帮助你简化工作。这些图形计算库将会在你的与图形相关的工作中帮助到你。

所周PHP下的一个图形软件库:GD 图形库,可以用于动态的处理图形图像。GD提供了对于诸如C, Perl, Python, PHP, OCaml等等诸多编程语言的支持。除了生成HTML输出之外,你还可以使用PHP以 PNG、JPEG、GIF、WBMP,以及 XPM等图形文件格式来创建和计算图形文件;并且,使用 PHP 还能让你可以直接向一个浏览器输出图像的数据流。为了这些功能,你需要编译PHP 时加入 GD 支持。本文我们来了解10个最佳的php图形操作库。

下面介绍一些最好的用于开发的PHP图形操作库:

1. Imagine

 

分享PHP图像操作库前10佳介绍

 

该图像处理库是用PHP 5.3建立的面向对象的PHP库。通过使用这个库,你可以很容易地对图像进行例如裁剪、调整大小和放置过滤器等工作。为了产生指定的RGB码值和对象透明度百分比,这个库的颜色类在其构造函数中支持两个参数。

2. Php Graphic Works

 

分享PHP图像操作库前10佳介绍

 

这个库被创建用来在服务器端进行图像处理。使用这个图像库允许你用一个简单的方法进行复杂的图像处理。可对图像进行的操作,包括旋转,裁剪,缩放,拉伸和翻转。而您只需要通过一些代码就可以完成这些。

3. Zebra Image

 

3. . Zebra Image

 

这款轻巧和面向对象的图像处理库是用PHP构建的。它支持的图像格式包括JPG,GIF 和 PNG。它有一个独特的能力,就是在每一个动作之后都可以把一种格式转换为另一种格式。

4. Php5 Image Manipulation

 

分享PHP图像操作库前10佳介绍

 

这个完全面向对象的图像处理库可用于PHP和GD2 。它被认为是 PHP-image 项目的一种扩展形式。这个面向对象的图像处理库提供各种ICO图像文件类型,如PNG,GIF ,PSD ,JPEG和ICO 。此外,它还能输出由GD2支持的各种图像文件类型。

5. 动态虚拟图像生成

 

分享PHP图像操作库前10佳介绍

 

这是免费的PHP脚本库,通过它你可以生成任何尺寸和颜色的图片。此外,你可以在图像上面输入文字。

6. WideImage

 

分享PHP图像操作库前10佳介绍

 

Wide Image也被认为是用于图像处理的面向对象的库。使用这个库,你可以执行处理、加载、以图像格式保存图像等一般操作。

7. Image Cache

 

分享PHP图像操作库前10佳介绍

 

这个轻量级的PHP类用于移动、压缩和缓存浏览器中的图像。然后,它返回打印在 image标签中的图像的新来源。您可以通过设置各种选项来使用这个库,比如 base URL,目录等。

8. Image Workshop

 

分享PHP图像操作库前10佳介绍

 

这是一个被认为是基于图层的图像编辑软件的可自由使用的PHP类。它允许你叠加多个层和具有执行比如把一个图像放到另一个上面进行移动,和调整大小,裁剪,写字,旋转,叠加等功能的能力。

9. Asido

 

分享PHP图像操作库前10佳介绍

 

这是个有着操作图像丰富功能的PHP库,适合任何运行环境,如 Magick Wand, GD2, 和Image Magick。它同时支持PHP4和PHP5。

10. PhpThumb

 

分享PHP图像操作库前10佳介绍

 

该PHP库除了支持各种流行的图像格式以外,还接受所有图像资源类型。使用该图像操作库,你可以旋转、裁剪、水印图片。除此之外,你还可以定义图片的像素。

jpgraph是一个非常优秀的柱状图插件了,它可以生成各种各样的图形并且以图片显示出来,这个和flash的比较有不少的优点了,下面小编为各位介绍jpgraph柱状图的使用方法

通过本文你至少可以掌握以下技巧:

1、能够使用JpGraph画出各式各样的图表

2、解决中文乱码
 

一、开启GD库

Jpgraph需要GD库的支持,所以在调式JpGraph之前,确保GD库已开启,这很重要,不然后面的工作就没办法展开了。GD库在PHP5中是被默认安装的,我们只需开启GD库就可以了。

打开php.ini文件,找到“;extension=php_gd2.dll”选项,将其前的分号“;”去掉,如图所示

jpgraph柱状图的使用方法详解

然后保存修改后的文件并重新启动apache服务器。可以通过phpinfo()函数来获取GD2函数库的安装信息,验证GD库是否安装成功。
 

二、使用方法

在使用JpGraph时,最好弄明白你使用的是哪一个版本,千万不要弄错,不然就会张冠李戴,让你调得头晕目眩的。也不要从网上找一些片断代码来调试,除非它是完整的,不然也会让你吃不了兜着走的了。唠叼就到这里了,下面开始调试。

 

运行环境

操作系统  W7

代码运行环境  apache+php5.3
JpGraph版本 jpgraph-3.5.0b1(点击这里下载或者到官网http://jpgraph.net/download/下载)
 

解压下载的jpgraph-3.5.0b1压缩包,会看到一些目录:

src:图表生成所依赖的代码包,其子目录Examples里有许多的实例。

srcExamples:里面包函许多实例,使用它们可以制作各种各样的图表
docs :jpgraph的开发文档,但全是英文的.。
docschunkhtml:里面有许多案例及附有图表,通过它我们可以参考一下我们所需要的图表。
 
在网站根目录建一个文件夹test,然后把把docs和src文件夹拷贝到前面所创建的目录test里,重命名src为jpgraph,这里因为Examples里面的实例文件加载的路径都是“require_once ('jpgraph/jpgraph.php');”
 

实例

把jpgraphExamplesaccbarex1.php拷贝到test目录(和jpgraph同一目录),然后打开打开http://localhost/test/accbarex1.php,我们就会看到生成的图

jpgraph柱状图的使用方法详解

哗,这是我们使用PHP作图很难实现的

 代码如下 复制代码

//加载生成图表对应的文件
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');

//创建图表的数据,可以自定义
$data1y=array(-8,8,9,3,5,6);
$data2y=array(18,2,1,7,5,4);

// 图表的长宽
$graph = new Graph(500,400);
$graph->SetScale("textlin");
$graph->SetShadow();

//图表的外边距
$graph->img->SetMargin(40,30,20,40);
// Create the bar plots
$b1plot = new BarPlot($data1y);
$b1plot->SetFillColor("orange");
$b1plot->value->Show();
$b2plot = new BarPlot($data2y);
$b2plot->SetFillColor("blue");
$b2plot->value->Show();
// Create the grouped bar plot
$gbplot = new AccBarPlot(array($b1plot,$b2plot));
// ...and add it to the graPH
$graph->Add($gbplot);

//设置图表的标题字体、大小
$graph->title->Set("Accumulated bar plots");
$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");

//和上面标题对应,设置标题的字体和大小
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

//生成本地图表,?认留空,生成在当前目录,可以Stroke(“路径/文件名.png”)这样指定路径
$graph->Stroke();

JpGraph的难点是中文乱码的解决,本来还想把这个问题一块解决的,但似乎篇幅有点长了,留到下一篇吧

小结:调试JpGraph,需要注意其运行环境、版本、操作系统以及代码的完整性,不然相同的代码可能却无法正确运行。

在我们生成验证码时会需要直接输入图片,通常会使用到header("Content-type: image/jpeg");来实现了,下面小编给各位介绍一下。

很多开发中,我们试图使用header("Content-type: image/jpeg");来 输出图片,试图用一些php的图像处理技术,让输出图片更加智能和动感。但我们常常遇到新的问题,除非你规定不同的URL结构,并采用服务器技术将图片缓 存,否则很有可能这些输出图片会消耗大量的流量。怎么把它们缓存起来,下次用户访问的时候调用缓存呢?(前提是你的这个图片希望保持不变)

 代码如下 复制代码
// put this above any php image generation code:
session_start();
header("Cache-Control: private, max-age=10800, pre-check=10800");
header("Pragma: private");
header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));

在header("Content-type: image/jpeg");上方添加上面这段代码,它将规定当前页面缓存的时间(两天),并在下一次访问中使用这个缓存时间节点。

接下来判断是否已经有缓存,如果有,就使用缓存。

情况一:如果浏览器对当前页面已经有缓存,那么就直接使用它。

 代码如下 复制代码
// the browser will send a $_SERVER['HTTP_IF_MODIFIED_SINCE'] if it has a cached copy
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
  // if the browser has a cached version of this image, send 304
  header('Last-Modified: '.$_SERVER['HTTP_IF_MODIFIED_SINCE'],true,304);
  exit;
}

情况二:浏览器缓存了当前页,虽然我们更新了某些图片信息,但来源图片本身没有变化,而且我们希望使用之前的缓存,那么也使用缓存。

 代码如下 复制代码

$img = "some_image.png";
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])
       &&
  (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == filemtime($img))) {
  // send the last mod time of the file back
  header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($img)).' GMT',
  true, 304);
  exit;
}

当然,有些特殊的情况我们还必须考虑,但上面的代码基本上能够带领我们的思路。对了,记得把它们都放在header("Content-type: image/jpeg")的上面。

接着我们来看个例子吧

 代码如下 复制代码

<?php
//调整图片大小
/**
 *图片按比例调整大小的原理:
 *1、比较原图大小是否小于等于目标大小,如果是则直接采用原图宽高
 *2、如果原图大小超过目标大小,则对比原图宽高大小
 *3、如:宽>高,则宽=目标宽, 高=目标宽的比例 * 原高
 *4、如:高>宽,则高=目标高,宽=目标高的比例 * 原宽  
 **/
 
$image = "test.jpg";
$max_width = 200;
$max_height = 200;
 
$size = getimagesize($image);   //得到图像的大小
$width = $size[0];            
$height = $size[1];
 
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
 
if (($width <= $max_width) && ($height <= $max_height))
{
    $tn_width = $width;
    $tn_height = $height;
}
elseif (($x_ratio * $height) < $max_height)
{
    $tn_height = ceil($x_ratio * $height);
    $tn_width = $max_width;
}
else
{
    $tn_width = ceil($y_ratio * $width);
    $tn_height = $max_height;
}
 
$src = imagecreatefromjpeg($image);
$dst = imagecreatetruecolor($tn_width, $tn_height); //新建一个真彩色图像
imagecopyresampled($dst, $src, 0, 0, 0, 0,
    $tn_width, $tn_height, $width, $height);        //重采样拷贝部分图像并调整大小
header('Content-Type: image/jpeg');
imagejpeg($dst,null,100);
imagedestroy($src);
imagedestroy($dst);
?>

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • Antd-vue Table组件添加Click事件,实现点击某行数据教程

    这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • vue 获取到数据但却渲染不到页面上的解决方法

    这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
  • mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • Vue生命周期activated之返回上一页不重新请求数据操作

    这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c# socket网络编程接收发送数据示例代码

    这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25
  • vue 数据(data)赋值问题的解决方案

    这篇文章主要介绍了vue 数据(data)赋值问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29