使用PHP将图像缩小到app优化大小

时间:2016-01-08 20:09:00

标签: php cakephp image-processing cakephp-2.7

我正在开发一个应用程序,用户可以在其中上传图像(到我的CakePHP 2.7.2后端服务器)。这些图像不时很大(例如大约7-8 MB的iPhone图像)。

应用程序在应用程序中显示这些图像(但由于必须下载的大数据,这需要很长时间。)

使用PHP将图像缩放到30kB的最佳方法是什么?我希望图像在尺寸和质量上有效。重要的要求是必须保持宽度和高度的比例!

2 个答案:

答案 0 :(得分:1)

您可能想尝试Adaptive Images PHP脚本。

  

自适应图像会检测访问者的屏幕大小,并自动创建,缓存和提供设备适当的重新缩放版本的网页嵌入式HTML图像。无需更改标记。它适用于响应式设计,并与流体图像技术结合使用。

使其在CakePHP中运行:

  1. 将其下载到您的/app/webroot/文件夹

  2. 修改你/app/webroot/.htaccess并在CakePHP mod_rewrite规则之前添加以下内容:

    RewriteCond %{REQUEST_URI} !optional_path_to_exclude/
    RewriteRule \.(?:jpe?g|gif|png)$ adaptive-images.php [L]
    
  3. 修改/app/webroot/adaptive_images.php并替换第16行:

    $cache_path    = "ai-cache"; 
    

    $cache_path    = "/app/tmp/cache/ai-cache/"; 
    

    和第30行:

    $source_file    = $document_root.$requested_uri;
    

    $source_file    = $document_root.'/app/webroot'.$requested_uri;
    
  4. 最后一步可能因您的虚拟主机配置而异。

答案 1 :(得分:0)

使用PHP处理图像有两种主要方式:GDImageMagick

对于GD,使用imagecopyresampled()最容易实现重新缩放图像。您将需要大致沿着以下几行编写代码:

$image = imagecreatefromstring($imageContents); //or one of the image imagecreatefrom* functions
$newImage = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $srcWidth, $srcHeight);

ob_start();
imagepng($newImage, null); //or imagejpeg as appropriate
$output = ob_get_contents();
ob_end_clean();

//do something with $output