如何在 php 中保持分辨率或提高 laravel 6 图像的分辨率

How to maintain resolution or increase resolution of image in laravel 6 in php

我正在尝试制作 idcard 的图像,但是当我改变它的尺寸时,它的分辨率降低了,我想保持尺寸为 88mm x 58 mm(1043 x 677 像素), 当我使用图像干预调整它的大小时,它会下降到 88mm x 58mm(219 x 332 像素),这是非常低的, 如果增加 px,则 88 x 58 mm 的高度宽度会分布,因此可能会发生错误,

意味着我想改变高度和宽度,但同时保持毫米长度不变,只增加高度

我试过了,

$card_width = $request->width * 3.779; //assume it is comming 57(mm)
$card_height = $request->height * 3.779; //assume it is comming 88(mm)
$img = Image::make($request->design_img)->resize($card_width, $card_height)->encode('png');
$temp_data_f = 'data:image/png;base64,' . base64_encode($temp_data_f);

上面的代码给我一个 48kb 的文件,图像分辨率很低,影响了我的打印质量, 实际上上传的文件大小为 88 x 58 毫米(1043 x 677 像素), 在代码获得相同尺寸但 88 x 58 毫米(219 x 332 像素)后,

我想让mm保持不变,只增加px, 我也不想压缩图片,

嘿,我自己得到了答案,

$card_width = $request->card_width * 12;
          $card_height = $request->card_height * 12;

          $temp_data_f = 'data:image/png;base64,' . base64_encode(file_get_contents($request->card_template_f));
          $temp_data_f = Image::make($temp_data_f)->resize($card_width, $card_height)->encode('png');
          $img_f = new \Imagick();
          $img_f->readImageBlob($temp_data_f);
          $img_f->setImageResolution(118.111,118.111);
          $img_f->setImageFormat("png");
          $blob_f = $img_f->getImageBlob();
          $temp_data_f = 'data:image/png;base64,' . base64_encode($blob_f);

这将获得任何分辨率的图像,但将输出 base64 300 分辨率图像 如果你想改变分辨率只是改变 $img_f->setImageResolution(118.111,118.111);118.111 更改为所需的值 desired_resolution/2.54 = value 只需将值替换为 118.111