使用php和GD打印高质量图像
我需要拍一张有人通过表单上传的照片,调整大小,合并一个高分辨率的框架@300dpi,并保持所有@300dpi,以获得最佳打印质量 是否可以通过GD处理高分辨率图像?如果可以,您能否提供一些如何处理的信息?我的代码已经进行了大小调整和合并,但我不确定它是否能在正确的dpi下工作使用php和GD打印高质量图像,php,image,image-processing,gd,Php,Image,Image Processing,Gd,我需要拍一张有人通过表单上传的照片,调整大小,合并一个高分辨率的框架@300dpi,并保持所有@300dpi,以获得最佳打印质量 是否可以通过GD处理高分辨率图像?如果可以,您能否提供一些如何处理的信息?我的代码已经进行了大小调整和合并,但我不确定它是否能在正确的dpi下工作 谢谢这基本上是可能的:只需使用适当数量的像素。(dpi单元在数字成像中没有意义,它仅用于将数字[像素]图像转换为物理格式) 例如: 11 x 8 inch canvas @300 dpi = 3300 x 2400 pix
谢谢这基本上是可能的:只需使用适当数量的像素。(dpi单元在数字成像中没有意义,它仅用于将数字[像素]图像转换为物理格式) 例如:
11 x 8 inch canvas @300 dpi = 3300 x 2400 pixels
但是,处理这么大的图像需要大量内存。经验法则是
needed bytes = width x height x 3 (or 4 if alpha-channels are used)
如果进行复制或调整大小,则此要求会增加,因为脚本需要在内存中保留多个副本
您需要一个非常慷慨的内存限制
设置才能工作
还请注意,GD只能处理RGB图像
对于大型图像和CMYK数据,如果您可以在服务器上使用,则可能是更好的选择。DPI是用于打印目的的转换系数。这绝对与GD如何看待图像无关。200像素乘以150像素的图像将始终是200像素乘以150像素,无论是10dpi还是5000dpi 但是,当您打印图像时,200x150@10dpi将用于20英寸x 15英寸的图像(300平方英寸),而5000dpi版本将用于0.04x0.03(0.0012平方英寸)
唯一的限制是PHP必须有足够的内存来保存解码后的图像内容。24位1000x1000像素图像需要1000x1000x3=大约3meg字节的内存,最小值(加上内部开销)。然后用额外的内存来保存新图像,这些图像将具有图像处理的结果。GD是关于像素的,DPI不在其中,因为这需要某种设备输出。如果您知道最终打印尺寸,则只需确保以像素为单位的尺寸在所需的DPI处正确缩放即可
一般来说,如果您使用的是大型图像,那么您的主要问题将是效率,包括速度和内存使用。我建议将其用于更复杂的作业。网页上的默认图像dpi为72或96(Mac或Windows/Linux)。您可以使用img标记的宽度和高度属性指定图像的宽度和高度,并生成具有所需dpi的图像
<img src="/images/image.png" width="300" height="200">
然后,将GD上的图像的宽度和高度乘以该变量,您将得到一个大图像,该图像在屏幕上显示为默认的72dpi,但将以更高的分辨率打印。完全正确。请注意,CMYK TIFF 3300 x 2400像素约为30MB(3300px 2400px x 4色),因此请确保,只要它的像素数与300dpi相匹配,它就能正确打印?我想象要用相当多的资源来实现高分辨率,哦,很高兴。@David,这将取决于您将要使用的打印软件-您可能需要在那里指定dpi,以便以正确的格式打印像素。您将无法在位图文件中执行此操作(至少不能以可靠的方式执行)
$resdpi = $resolution / 72;