Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP imagecopyresampled+;如何获得最佳效果_Php_Jquery_Html_Css - Fatal编程技术网

PHP imagecopyresampled+;如何获得最佳效果

PHP imagecopyresampled+;如何获得最佳效果,php,jquery,html,css,Php,Jquery,Html,Css,我有以下工作条件: 用户上载图像,然后使用imagecopyresampled和imagejpeg(保持比例)调整图像大小,使其适合裁剪DIV 然后,用户使用JCrop裁剪图像,然后使用imagecopyresampled和imagejpeg将上述调整大小的图像剪切为5种所需的裁剪尺寸 我发现的问题是,从调整大小的图像中进行裁剪并没有利用通常更大、质量更好的原始图像 因此,我想显示一个适合DIV的图像,但从原始图像中裁剪以获得最佳质量 当我只是将裁剪更改为原始图像时,裁剪是图像的错误部分,因为

我有以下工作条件:

  • 用户上载图像,然后使用imagecopyresampled和imagejpeg(保持比例)调整图像大小,使其适合裁剪DIV

  • 然后,用户使用JCrop裁剪图像,然后使用imagecopyresampled和imagejpeg将上述调整大小的图像剪切为5种所需的裁剪尺寸


  • 我发现的问题是,从调整大小的图像中进行裁剪并没有利用通常更大、质量更好的原始图像

    因此,我想显示一个适合DIV的图像,但从原始图像中裁剪以获得最佳质量

    当我只是将裁剪更改为原始图像时,裁剪是图像的错误部分,因为大小不同。我想这是显而易见的。不同大小的图像


    我如何显示一个适合Jcrop的DIV的图像,然后实际裁剪掉通常更大的原始图像

    我正在测试的想法:

    • 在DIV中显示原始图像(不是通过php调整大小,而是通过CSS调整大小)。我不确定这是否会有什么不同

    • 尝试使用一些基于数学的公式来获得正确的作物。不确定我现在怎么做

    想法会很好。。。
    thx

    我个人认为,如果您必须使用全尺寸图像服务器端,我会选择基于数学的解决方案。在IMO中,直接或通过CSS在浏览器中进行重新缩放并不理想,而且不同浏览器之间存在很大差异。如果使用基于数学的选项,则可以计算较小图像裁剪上的坐标,并将其放大以获得原始图像的正确部分

    另一方面,您可能会发现(取决于允许上载的图像大小和图像类型),在PHP端进行复制和调整大小非常占用CPU和内存。例如,高分辨率的大约1024 x 768的png文件可能需要高达60MB到80MB的RAM来调整大小(由于png文件上的压缩,每个图像重新采样),这与您使用的PHP图像处理模块(,等等)无关。没有完美的方法来处理从PHP服务器端上传的图像(除了在任务中抛出大量内存和CPU)。不过,有一些好的jQuery解决方案可以在上传之前在客户端调整大小(例如,etc),这意味着您只能在服务器端处理缩小的图像。还有一些JQuery客户端裁剪脚本非常好。无论哪种方式,PHP和jQuery的组合都是最好的IMO