我想调整DPI 300或更高版本的图像大小。 我希望它的DPI保持完整...... 我已经使用GD库函数来调整裁剪的图像,但它将DPI降低到90! 请提供解决方案,因为我的要求不涉及缩减DPI
答案 0 :(得分:2)
imagecopyresampled()
获得最佳效果 - manual 这显然是以较低质量的代价来实现的。
在没有质量损失的情况下放大图像是不可能的。放大时您将无法保留原始图像质量,因为像素信息根本就不存在。有一些调整大小算法采用抗锯齿和其他技术(比如在imagecopyresampled()
重新采样以帮助提高质量,但它永远不会是完美的。
如果要在不丢失任何图像数据的情况下显示较小的较大图像,可以将其放入img
标记,然后使用css width
属性将其缩小。注意:这不会比调整图像大小更好。此外,您传输的数据超出了必要的数量,并且在某些浏览器中,由于使用了低质量(但速度较快)的算法,调整大小的结果可能看起来很糟糕 - 因此图像可能看起来更糟糕。
答案 1 :(得分:0)
DPI表示每英寸点数。如果调整图像大小,则英寸数保持不变(显示相同的图像),但点数减少(像素数减少)。
因此,如果降低图像的大小,则始终降低DPI。
答案 2 :(得分:0)
那不是真的 DPI只是在您打印某些内容时使用的“转换”,它没有说明屏幕上图片的质量。 如果您调整图片大小(像素大小),如果您不触摸DPI,则打印版本会以相同的方式缩小。 你可以保持印刷尺寸相同,但这意味着降低DPI所以如果你缩小图像的大小, 你总是会降低DPI。
1200 * 1200px 300dpi图像打印为4“* 4”
600 * 600px图像,300dpi是2“* 2”
600 * 600px图像,150dpi是4“* 4”
如果使用imagecopyresampled(),DPI应在图像中保持不变
答案 3 :(得分:0)
如果你想裁剪图像并在裁剪区域保留源图像PPI(这将是一个新图像),你可以按照以下步骤使用Imagick:
// copy the original source to a new image, on which you'll be working
copy('example_source.jpg', 'example_cropped.jpg');
// set the resource path to work on
$resource = new Imagick('example_cropped.jpg');
// cropp the image
$resource->cropImage($cropp_width, $cropp_height, $left_offset_in_px, $top_offset_in_px);
// save the image (in this case, the same path as the one we're working on)
$resource->writeImage('example_cropped.jpg');
这是我发现的最合理的方法,因为imagecopyresampled和imagejpeg似乎将图像的PPI更改为默认的96 ppi(即使对于300 ppi的源也是如此)。