调整图像大小但不影响 DPI?

发布于 2024-08-25 01:33:16 字数 115 浏览 8 评论 0原文

我想调整 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

滥情稳全场 2024-09-01 01:33:16
  1. 拍摄图像,假设它是 1000 x 1000 像素大
  2. 裁剪/调整图像大小为一个部分,例如 100 x 100 像素大
  3. 将 100 x 100 部分放大到 1000 x 1000 像素 - 使用 imagecopyresampled() 以获得最佳效果- 手册
  4. 完成!

显然,这是以较低质量为代价的。

在没有质量损失的情况下放大图像是不可能的。放大时您将无法保留原始图像质量,因为像素信息根本不存在。有使用抗锯齿和其他技术的调整大小算法(例如在 imagecopyresampled() 中重新采样来提高质量,但它永远不会是完美的。

如果您想在不丢失任何图像数据的情况下显示较小的大图像,您可以将其放入 img 标记中,然后使用 css width 属性将其缩小。 注意:这不会为您提供比调整图像大小更好的质量。此外,您传输的数据超出了必要的范围,并且在某些浏览器中,由于使用低质量(但快速)的算法,调整大小的结果可能看起来很糟糕 - 因此图像最终可能看起来更糟。

  1. Take image, say it's 1000 x 1000 Pixels large
  2. Crop / resize image to a portio, say, 100 x 100 Pixels large
  3. Enlarge 100 x 100 portion to 1000 x 1000 Pixels - use imagecopyresampled() for best results - manual
  4. Done!

This 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 css width 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.

離人涙 2024-09-01 01:33:16

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.

太傻旳人生 2024-09-01 01:33:16

所以如果你减小图像的尺寸,
你总是降低 DPI。

那不是真的
DPI 只是打印某些内容时使用的“转换”,它与屏幕上图片的质量无关。
如果您调整图片大小(即像素大小),则在不触摸 DPI 的情况下,打印版本也会以相同的方式缩小。
您可以保持打印尺寸相同,但这意味着降低 DPI

300dpi 的 1200*1200px 图像为 4"*4" 打印

300dpi 的 600*600px 图像为 2"*2"

150dpi 的 600*600px 图像为 4" *4"

如果您使用 imagecopyresampled(),图像中的 DPI 应保持不变

So if you lower the size of the image,
you always lower the 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

陪我终i 2024-09-01 01:33:16

如果您想裁剪图像并在裁剪区域保留源图像 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)。

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:

// 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');

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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文