如何在 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
我正在尝试制作 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