0

我有以下工作正常:

  1. 用户上传图像并使用 imagecopyresampled 和 imagejpeg(保持比例)调整图像大小,使其适合裁剪 DIV。

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


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

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

当我只是将裁剪更改为原始图像时,裁剪是图像的错误部分,因为尺寸不同。我认为这很明显。不同大小的图像。


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

我正在测试的想法:

  • 在 DIV 中显示原始图像(不是由 php 调整大小,而是由 CSS 调整大小)。我不确定这是否会有所作为。

  • 尝试使用一些基于数学的方程来获得正确的作物。不确定我目前将如何执行此操作。

想法会很棒...谢谢

4

1 回答 1

1

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

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

于 2012-09-21T00:41:39.400 回答