调整图像大小但不影响 DPI?
我想调整 DPI 300 或更高的图像大小。 我希望它的 DPI 保持不变...... 我已经使用 GD 库函数来调整裁剪后的图像大小,但它会将 DPI 降低到 90! 请给出解决方案,因为我的要求不涉及缩小 DPI
I want to resize a image with DPI 300 or greater..
I want it's DPI to remain intact...
I have used GD library function to resize image cropped but it brings down DPI to 90!
please give a solution as my requirement involves no downsizing of DPI
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
imagecopyresampled()
以获得最佳效果- 手册显然,这是以较低质量为代价的。
在没有质量损失的情况下放大图像是不可能的。放大时您将无法保留原始图像质量,因为像素信息根本不存在。有使用抗锯齿和其他技术的调整大小算法(例如在
imagecopyresampled()
中重新采样来提高质量,但它永远不会是完美的。如果您想在不丢失任何图像数据的情况下显示较小的大图像,您可以将其放入
img
标记中,然后使用 csswidth
属性将其缩小。 注意:这不会为您提供比调整图像大小更好的质量。此外,您传输的数据超出了必要的范围,并且在某些浏览器中,由于使用低质量(但快速)的算法,调整大小的结果可能看起来很糟糕 - 因此图像最终可能看起来更糟。imagecopyresampled()
for best results - manualThis comes at the price of lower quality, obviously.
It's going to be impossible to enlarge an image with no quality loss. You won't be able to retain the original image quality when enlarging because the pixel information simply isn't there. There are resizing algorithms that employ antialiasing and other techniques (like resampling in
imagecopyresampled()
to help the quality, but it will never be perfect.If you want to display a large image smaller without losing any image data, you would put it into a
img
tag and then scale it down using the csswidth
property. Note: This is not going to give you any better quality than resizing the image. In addition you are transferring more data than necessary, and in some browsers the result of the resizing may look bad due to the use of low-quality (but fast) algorithms - so the image may end up looking worse.DPI 表示每英寸点数。如果调整图像大小,英寸数保持不变(显示相同的图像),但点数会减少(像素减少)。
因此,如果减小图像的尺寸,则始终会降低 DPI。
DPI means dots per inch. If you resize the image, the amount of inches stays the same (you show the same image), but the amount of dots goes down (less pixels).
So if you lower the size of the image, you always lower the DPI.
那不是真的
DPI 只是打印某些内容时使用的“转换”,它与屏幕上图片的质量无关。
如果您调整图片大小(即像素大小),则在不触摸 DPI 的情况下,打印版本也会以相同的方式缩小。
您可以保持打印尺寸相同,但这意味着降低 DPI
300dpi 的 1200*1200px 图像为 4"*4" 打印
300dpi 的 600*600px 图像为 2"*2"
150dpi 的 600*600px 图像为 4" *4"
如果您使用 imagecopyresampled(),图像中的 DPI 应保持不变
thats not true
the DPI is just a "conversion" used when you print something, it says nothing about the quality of the picture onscreen.
if you resize a picture (pixelsize that is) the printed versions shrinks the same way if you don't touch the DPI.
you could keep the printed size the same, but that would mean lowering the DPI
1200*1200px image with 300dpi is 4"*4" printed
600*600px image with 300dpi is 2"*2"
600*600px image with 150dpi is 4"*4"
if you use imagecopyresampled() the DPI should stay the same in the image
如果您想裁剪图像并在裁剪区域保留源图像 PPI(这将是一个新图像),您可以按照以下步骤使用 Imagick:
这是我发现的最合理的方法,因为 imagecopyresampled 和 imagejpeg 似乎将图像的 PPI 更改为默认 96 ppi(即使对于源,也为 300 ppi)。
If you want to cropp an image and retain the source image PPI on the cropped area (which will be a new image) you can use Imagick following these steps:
This is the most reasonable method I've found, since imagecopyresampled and imagejpeg seem to change the PPI of an image to the default 96 ppi (even for sources, with 300 ppi).