php 判断图片是否能打开

php 判断图片是否能打开,第1张

if ( $file_content = file_get_contents( $image_path ) ) {

//  能打开

} else {

// 不能打开

}

或者 参考 以下函数

function my_file_exists($file)  

{  

    if(preg_match('/^http:\/\//',$file)){  

        //远程文件  

        if(ini_get('allow_url_fopen')){  

            if(@fopen($file,'r')) return true  

        }  

        else{  

            $parseurl=parse_url($file)  

            $host=$parseurl['host']  

            $path=$parseurl['path']  

            $fp=fsockopen($host,80, $errno, $errstr, 10)  

            if(!$fp)return false  

            fputs($fp,"GET {$path} HTTP/1.1 \r\nhost:{$host}\r\n\r\n")  

            if(preg_match('/HTTP\/1.1 200/',fgets($fp,1024))) return true  

        }  

        return false  

    }  

    return file_exists($file)  

}

参考:http://blog.163.com/ydr_899/blog/static/38994332012103004226986/

1.文件下载

header("Content-type: text/htmlcharset=utf-8") //设置头信息

if (!file_exists($file_dir.$name)){ //判断是否存在某个文件

echo "File not found!" //如果不存在就提示用户文件未找到

} else {

$file = fopen($file_dir.$name,"r") //否则就读取文件

Header("Content-type: application/octet-stream")//设置浏览器下载需要的头,告诉客户端的浏览器服务端返回的文件形式 是一个下载文件

Header("Accept-Ranges: bytes")//告诉客户端浏览器返回的文件大小是按照字节进行计算的

Header("Accept-Length: ".filesize($file_dir . $name))//告诉浏览器返回的文件大小

Header("Content-Disposition: attachmentfilename=".$name)//:告诉浏览器返回的文件的名称

echo fread($file, filesize($file_dir.$name))//按字节读取文件

fclose($file)//关闭文件资源

}

2.文件压缩:

PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,

addEmptyDir() 添加一个新的文件目录

addFile() 将文件添加到指定zip压缩包中。

ddFromString()添加的文件同时将内容添加进去

open() 打开一个zip压缩包

close()关闭ziparchive

extractTo()将压缩包解压

getStatusString()返回压缩时的状态内容,包括错误信息,压缩信息等等

deleteIndex()删除压缩包中的某一个文件,如:deleteIndex(0)删除第一个文件

deleteName()删除压缩包中的某一个文件名称,同时也将文件删除。

注意点:使用open方法的时候,第二个参数$flags是可选的,$flags用来指定对打开的zip文件的处理方式,共有四种情况

1. ZIPARCHIVE::OVERWRITE 总是创建一个新的文件,如果指定的zip文件存在,则会覆盖掉

2.ZIPARCHIVE::CREATE 如果指定的zip文件不存在,则新建一个

3. ZIPARCHIVE::EXCL 如果指定的zip文件存在,则会报错

4. ZIPARCHIVE::CHECKCONS

一、解压缩zip文件

$zip=new ZipArchive//新建一个ZipArchive的对象

if($zip->open('test.zip')===TRUE){

$zip->extractTo('images')//假设解压缩到在当前路径下images文件夹内

$zip->close()//关闭处理的zip文件

}

二、将文件压缩成zip文件

$zip=new ZipArchive

if($zip->open('test.zip',ZipArchive::OVERWRITE)===TRUE){

$zip->addFile('image.txt')//假设加入的文件名是image.txt,在当前路径下

$zip->close()

}

三、文件追加内容添加到zip文件

$zip=new ZipArchive

$res=$zip->open('test.zip',ZipArchive::CREATE)

if($res===TRUE){

$zip->addFromString('test.txt','file content goes here')

$zip->close()

echo 'ok'

}else{

echo 'failed'

}

四、将文件夹打包成zip文件

function addFileToZip($path,$zip){

$handler=opendir($path)//打开当前文件夹由$path指定。

while(($filename=readdir($handler))!==false){

if($filename != "." &&$filename != ".."){//文件夹文件名字为'.'和‘..’,不要对他们进行 *** 作

if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归

addFileToZip($path."/".$filename, $zip)

}else{ //将文件加入zip对象

$zip->addFile($path."/".$filename)

}

}

}

@closedir($path)

}

$zip=new ZipArchive()

if($zip->open('images.zip', ZipArchive::OVERWRITE)=== TRUE){

addFileToZip('images/', $zip)//调用方法,对要打包的根目录进行 *** 作,并将ZipArchive的对象传递给方法

$zip->close()//关闭处理的zip文件

}

3.php处理flash扩展:

ming库:

<?php

$f = new SWFFont( '_sans' )//创建指向一个内置字体(_sans)的指针

$t = new SWFTextField() //创建文本字段

$t->setFont( $f ) //设定字体

$t->setColor( 0, 0, 0 )//颜色

$t->setHeight( 400 )//大小,

$t->addString( 'Hello World' )//提供一些文本内容(“Hello World”)

$m = new SWFMovie()//创建了一个 SWFMovie 对象并设定其尺寸

$m->setDimension( 2500, 800 )

$m->add( $t ) //向动画中添加了文本元素并将动画保存到文件中。

$m->save( 'hello.swf' ) //在本地保存为 hello.swf

?>

打开浏览器输入 hello.swf 就可以看到了哦。

header( 'Content-type: application/x-shockwave-flash' )

$m = new SWFMovie()

$m->setDimension( 300, 300 )

$s = new SWFShape()

$s->setLine( 5, 0, 0, 0 )

$s->movePenTo( -100, -100 )

$s->drawLineTo( 100, 100 )

$ts = $m->add( $s )

$ts->moveTo( 150, 150 )

for( $i = 0$i <100$i++ ) {

$ts->rotate( 10 )

$m->nextframe()

}

$m->save( 'rotate.swf' )

从 -100, -100 到 100, 100 画了一条直线。这将把直线的中心放在坐标 0,0 处。这样,当我在旋转图形时,直线的中心将发生旋转。

当我向动画中添加图形时,将移动返回到框架中心的 SWFDisplayItem。然后用 rotate() 方法使它旋转并每旋转一周就增大其框架。

<?php

$img = new SWFBitmap(file_get_contents( 'megan.jpg' ))

$s = new SWFShape()

$imgf = $s->addFill( $img )

$s->setRightFill( $imgf )

$s->movePenTo( 0, 0 )

$s->drawLineTo( $img->getWidth(), 0 )

$s->drawLineTo( $img->getWidth(), $img->getHeight() )

$s->drawLineTo( 0, $img->getHeight() )

$s->drawLineTo( 0, 0 )

$m = new SWFMovie()

$m->setDimension( $img->getWidth() * 2, $img->getHeight() * 2 )

$is = $m->add( $s )

$is->moveTo( $img->getWidth() / 2, $img->getHeight() / 2 )

for( $i = 0$i <10$i++ )

{

$is->skewx( 0.02 )

$is->skewy( -0.03 )

$m->nextframe()

}

$m->save( 'image.swf' )

当检查的文件是本地时用php自带的file_exists检查就行了,而此函数只能检查本地的函数是否存在,所以如果要检查远程的文件是否存在只能用其它的方法了。如果所服务器中php的配置开启了“allow_url_fopen = On”,即允许远端访问,那么也很简单,其实这个是php.ini中默认开启的,用fopen函数判断就行了,能打开说明存在如果allow_url_fopen = Off那么可以用socket通讯来解决下面写的一个通用函数my_file_exists来检查文件是否存在function my_file_exists($file){if(preg_match('/^http:\/\//',$file)){//远程文件if(ini_get('allow_url_fopen')){if(@fopen($file,'r')) return true}else{$parseurl=parse_url($file)$host=$parseurl['host']$path=$parseurl['path']$fp=fsockopen($host,80, $errno, $errstr, 10)if(!$fp)return falsefputs($fp,GET {$path} HTTP/1.1 \r\nhost:{$host}\r\n\r\n)现在就可以调用此函数来检查文件的存在性,而不用去考虑是远程还是本地文件,或者是否禁用了allow_url_open


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

原文地址: http://outofmemory.cn/tougao/12031452.html

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

发表评论

登录后才能评论

评论列表(0条)

保存