2012-09-20 30 views
0

我有以下工作正常:PHP imagecopyresampled +如何获得最好的结果

  1. 用户上传的图像,并调整大小使用imagecopyresampled和imagejpeg(保持比例),所以它适合种植DIV 。

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


我发现的问题是从调整后的图像剪裁不走,往往是更大的,更好的质量非常原始图像的优势。

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

当我只是将裁切改为原始图像时,由于裁切大小不同,裁切成为图像的错误部分。这很明显,我假设。 Diff大小的图像。


如何显示适合Jcrop DIV的图像,但实际上裁剪的原始图像通常较大?

想法我测试:

  • 显示在DIV原始图像(不是PHP的调整,但调整的CSS)。我不确定这是否会有所作为。

  • 尝试使用一些基于数学的方程来获得正确的作物。不确定我目前会怎么做。

想法将是巨大的...... THX

回答

1

个人而言,我会用基础的解决方案,如果您有全尺寸图像服务器端工作的数学去。直接或通过CSS在浏览器中重新缩放并不是理想的IMO,而且浏览器之间差别很大。如果使用基于数学的选项,则可以计算较小图像裁剪和缩放的坐标,以获取原始图像的正确部分。

在附注中,您可能会发现(取决于您允许上传的图像大小和图像类型),在PHP端进行复制和调整大小非常耗费CPU和内存。例如,高分辨率的大约1024 x 768的png文件可能需要多达60MB到80MB的RAM才能调整大小(由于png文件上的压缩而导致每个图像重新采样),并且不管哪个PHP图像处理模块( ImageMagick等)您使用。没有完美的方式来处理来自PHP服务器端的图片上传(除了在任务中投掷大量内存和CPU)。有一些很好的jQuery解决方案可以在上传之前在客户端调整大小(例如Plupload等),这意味着您只能在服务器端使用缩小大小的图像。还有一些很好的JQuery客户端裁剪脚本。无论哪种方式,PHP和jQuery的组合将是最好的IMO。