图像重采样调整大小

原创 2007年09月19日 21:36:00
//-----------------------------------------------------------------------------------------------------
//图像重采样调整大小,如果成功,返回一个数组,有两个值,第一个是调整后的宽度,第二个是调整后的高度,
//参数的含义:
//imageurl:    要调整的图像文件名
//$seze:    调整目标大小的像素数,一个参数,表示一个正方形的区域
//$quality:    如果是JPEG图像,则可以指定,目标图像的品质,范围:[0,100]
//------------------------------------------------------------------------------------------------------

function imageresize($imageurl,$size=800,$quality=75)
{
    
$size=intval($size);
    
if($size<=0)
        
$size=1024;

    
$quality=intval($quality);
    
if($quality<0)
        
$quality=0;
    
if($quality>100)
        
$quality=100;
    
    
if(!file_exists($imageurl))
    {
        
return array(-1,-1);
    }
else
    {
        
$ext=strtolower(substr($imageurl,strrpos($imageurl,".")+1));
        
if($ext=='jpg'||$ext=='jpeg'||$ext=='gif'||$ext=='png'||$ext=='bmp')
        {
            
$imagewh=getimagesize($imageurl);
            
$Ws=$imagewh[0];
            
$Hs=$imagewh[1];
            
            
if($Ws>=$Hs)
            {
                
if($Ws<=$size)
                    
return getimagesize($imageurl);
                
else
                {
                    
$Wt=$size;
                    
$Ht=intval(($Hs/$Ws)*$size);
                }
            }
else


            {
                
if($Hs<=$size)
                    
return getimagesize($imageurl);
                
else
                {
                    
$Wt=intval(($Ws/$Hs)*$size);
                    
$Ht=$size;
                }
            }
    
            
switch($ext)
            {
                
case 'jpg':
                
case 'jpeg':
                    
$imgs=@imagecreatefromjpeg($imageurl);
                    
$imgt=@imagecreatetruecolor($Wt,$Ht)
                          or 
die ("Cannot Initialize new GD image stream");
                    imagecopyresampled(
$imgt,$imgs,0,0,0,0,$Wt,$Ht,$Ws,$Hs);
                    imagejpeg(
$imgt,$imageurl);
                    imagedestroy(
$imgs);
                    imagedestroy(
$imgt);
                    
return array($Wt,$Ht);
                
break;
                
                
case 'bmp':
                    
$imgs=@imagecreatefromjpeg($imageurl);
                    
$imgt=@imagecreatetruecolor($Wt,$Ht)
                          or 
die ("Cannot Initialize new GD image stream");
                    imagecopyresampled(
$imgt,$imgs,0,0,0,0,$Wt,$Ht,$Ws,$Hs);
                    imagewbmp(
$imgt,$imageurl);
                    imagedestroy(
$imgs);
                    imagedestroy(
$imgt);
                    
return array($Wt,$Ht);
                
break;
    
                
case 'gif':
                    
$imgs=@imagecreatefromjpeg($imageurl);
                    
$imgt=@imagecreatetruecolor($Wt,$Ht)
                          or 
die ("Cannot Initialize new GD image stream");
                    imagecopyresampled(
$imgt,$imgs,0,0,0,0,$Wt,$Ht,$Ws,$Hs);
                    imagegif(
$imgt,$imageurl);
                    imagedestroy(
$imgs);
                    imagedestroy(
$imgt);
                    
return array($Wt,$Ht);
                
break;
    
                
case 'png':
                    
$imgs=@imagecreatefromjpeg($imageurl);
                    
$imgt=@imagecreatetruecolor($Wt,$Ht)
                          or 
die ("Cannot Initialize new GD image stream");
                    imagecopyresampled(
$imgt,$imgs,0,0,0,0,$Wt,$Ht,$Ws,$Hs);
                    imagepng(
$imgt,$imageurl);
                    imagedestroy(
$imgs);
                    imagedestroy(
$imgt);
                    
return array($Wt,$Ht);
                
break;
                
                
default:
                    
return array(-1,-1);
            }
        }
else
        {
            
return array(-1,-1);
        }
    }
}
//------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ArcGIS教程:栅格像元大小和重采样

不同的栅格数据集不需要使用相同的像元分辨率进行存储。但在处理多个数据集时,最好使用相同的像元分辨率。将多个不同分辨率的栅格数据集输入任一ArcGIS Spatial Analyst 扩展模块工具时,会...

ENVI\IDL 重采样 栅格单元大小设置

转载自:http://www.cnblogs.com/myyouthlife/archive/2012/07/01/2571785.html在ENVI\IDL 下图像重采用是用Resize_doit ...

ENVI\IDL 重采样 栅格单元大小设置

在ENVI\IDL 下图像重采用是用Resize_doit 函数。该函数能用来改变图像的大小和对图像重采样。 该函数有个参数RFACT。 RFACT Use this keyword to speci...

GDAL切割重采样遥感图像(航拍影像、卫片)

一个小测试程序开发全过程实录,完全新手入门级的实例,如果你还在为处理大影像而发愁,来试试这个称手的工具吧。

如何使用GDAL重采样图像

在编写重采样图像时,可以使用GDAL来读写图像,然后自己编写重采样算法(最邻近像元法,双线性内插法,三次立方卷积法等)【关于这采样算法有时间我会单独写一篇文章来说明原理的】将计算的结果写入图像中来实现...

图像重采样方法

重采样方法 栅格/影像数据进行配准或纠正、投影等几何变换后,像元中心位置通常会发生变化,其在输入栅格中的位置不一定是整数的行列号,因此需要根据输出栅格上每个像元在输入栅格中的位置,对输入栅格...

IDL重采样JPG图像

图像重采样篡改

OpenCv调整图像大小及仿射变换(旋转)

缩放: procedure TFrmMain.BtnResizeClick(Sender: TObject); var   pImg: PIplImage;   pDst: PIplImage...

图像的重采样

  • 2013-03-15 19:41
  • 71KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)