代码之家  ›  专栏  ›  技术社区  ›  galengodis

使用imagick裁剪不起作用的大图像

  •  2
  • galengodis  · 技术社区  · 11 年前

    我使用jCrop jquery插件通过ajax调用传递Width Height和x-y corinates:

    对于Imagemagik和imagickphp扩展,我使用如下:

    $picture = new Imagick($src);
    $picture->cropImage( $_POST['w'],  $_POST['h'],  $_POST['x'],  $_POST['y']);
    $picture->writeImage($outFile);
    $picture->thumbnailImage(445, 0);
    $picture->writeImage($outFileWeb);
    $picture->clear();
    $picture->destroy();
    

    用户上传大型图像/照片,然后使用jCrop选择要裁剪的区域。如果他们选择一个较小的照片区域来裁剪,一切都会正常工作。当他们试图选择更大面积的照片进行裁剪时,问题就来了,然后php脚本永远不会返回任何结果。

    我不知道如何跟踪出了什么问题或如何调试问题。

    编辑

    简而言之: 如何在imagick中启用调试? 为什么imagick不处理更大的作物面积? 这可能是某种内存问题/php设置吗?

    感谢任何帮助:)谢谢!

    1 回复  |  直到 11 年前
        1
  •  1
  •   Community CDub    7 年前

    好的,开始工作了! 这是一个记忆问题。。。

    解决方案(在“new Imagick()”之前放入php代码:

    // pixel cache max size
    IMagick::setResourceLimit(imagick::RESOURCETYPE_MEMORY, 64);
    // maximum amount of memory map to allocate for the pixel cache
    IMagick::setResourceLimit(imagick::RESOURCETYPE_MAP, 64);
    

    在此处找到答案: http://sourceforge.net/apps/trac/gallery/ticket/1513

    在这里: https://stackoverflow.com/questions/4367 …大型图像

    顺便说一下:我是如何调试的:

    1. 在php.ini中编辑: log_errors=关闭->log_errors=打开 编辑php.ini后不要忘记重新启动apache。。。

    2. 将其放在php代码的开头: 错误报告(E_ALL);