我需要在运行时将PNG文件转换为BMP文件.
我不能这样做
Image dummy = Image.FromFile("image.png");
dummy.Save("image.bmp", ImageFormat.Bmp);
Run Code Online (Sandbox Code Playgroud)
因为我无法将bmp映像作为文件保存在本地磁盘上.
谢谢你的帮助.
我最近遇到了数据URI方案,并在维基百科上阅读它.
示例代码如下所示:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
Run Code Online (Sandbox Code Playgroud)
我的问题是:你如何生成在iVBORw0KGgoAAAA...网站上使用的代码(IE :)?
注意:我特别关注如何在没有服务器端脚本的情况下完成此操作.但您仍然可以为可能遇到此问题的其他人发布服务器端脚本方式.我也见过网站会为你做这个,我怎么能自己做?
我有一个使用PHP和ImageMagick工作的PDF到PNG转换脚本,但我遇到了转换速度的问题.
我知道它的工作原理是因为使用非常小的PDF,转换所用的时间并不是那么好,但是使用250kb的文件(实际上还不是那么大),转换需要超过20分钟.
这是PHP:
//***** GET PATH TO IMAGEMAGICK *****
$path_to_imagemagick = trim(`which convert`);
//***** PATH TO PDF TO CONVERT *****
$path_to_pdf = getcwd() . "/pdf/myfile.pdf[0]";
//***** PATH TO OUTPUT TO *****
$output_path = getcwd() . "/pdfimage/test_converted.png";
@exec($path_to_imagemagick . " -density 72 -quality 60 -resize 150x " . $path_to_pdf . " " . $output_path);
Run Code Online (Sandbox Code Playgroud)
我可以更改任何设置以加快速度吗?
如果有帮助,图像不需要是PNG.如果JPEG更快,我很乐意接受它.
我如何使用mogrify批量转换大量文件(.TIF,.EPS,.JPG,但最烦人的全部).PSD文件,只保留第一层?
我找到了一个如何转换所有图像的解决方案,但我一直在输出目录中获取与原始文件不同的文件名(它们的原始文件名附加了-0,-1,-2等).
我有2个文件夹,./ original /(包含我的PSD,EPS,TIF,GIF,JPG和其他图像)+文件夹./converted/(这是我转换的目标文件夹)
我用来转换图像的命令是:
mogrify -verbose -path ./converted/ \
-alpha off -strip -mattecolor white -background white \
-resize 512x512 -format jpg -quality 75% -interlace Plane ./original/*.*
Run Code Online (Sandbox Code Playgroud)
但无论我尝试什么,我都会不断收到这些垃圾,这会破坏我的文件名.然而,有一种模式只是将文件的每个解释合并为一种模式,但由于我在透明文件上获得黑色背景,这也是无用的.
在我的网站中,我现在将上传的图像转换为 webp,因为它比其他格式小,用户会更快地加载我的页面(也是移动用户)。但转换中等图像需要一些时间。
import StringIO
import time
from PIL import Image as PilImage
img = PilImage.open('222.jpg')
originalThumbStr = StringIO.StringIO()
now = time.time()
img.convert('RGBA').save(originalThumbStr, 'webp', quality=75)
print(time.time() - now)
Run Code Online (Sandbox Code Playgroud)
转换以下图像需要 2.8 秒:
860KB,1920 x 1080
我的内存是 8GB RAM,处理器为 4 核(Intel I5),没有 GPU。
我在用着Pillow==5.4.1。
有没有更快的方法可以更快地将图像转换为 WEBB。2,8秒,看来等的时间太长了。
我试图在 Getx 控制器中将图像转换为 Base64 文本,但显示错误“无法将‘String’类型的值分配给‘RxString’类型的变量”。
base64 state-management image-conversion flutter flutter-getx
HEIC 是 Apple 自己的格式,用于存储使用 iOS 相机拍摄的高分辨率图像。但我会存储在后端 JPG 上,因为 HEIC 在大多数浏览器中不显示,甚至在 Safari 中也不显示。
解决方案1
我尝试了这个转换:
const buffer = Buffer.from(await file.arrayBuffer())
const d = heicConvert({ buffer, format: 'JPEG' })
const imgBase64 = btoa(
d.reduce((data, byte) => `${data}${String.fromCharCode(byte)}`, '')
)
Run Code Online (Sandbox Code Playgroud)
但因为我使用 Next.js 它与它不兼容。
Failed to compile.
./node_modules/libheif-js/libheif/libheif.js
Module not found: Can't resolve 'fs' in '/Users/janoskukoda/Workspace/tikex/portal/team/node_modules/libheif-js/libheif'
Run Code Online (Sandbox Code Playgroud)
解决方案2
我也尝试过这个:
Failed to compile.
./node_modules/libheif-js/libheif/libheif.js
Module not found: Can't resolve 'fs' in '/Users/janoskukoda/Workspace/tikex/portal/team/node_modules/libheif-js/libheif'
Run Code Online (Sandbox Code Playgroud)
但我无法编译,似乎sharp不建议在客户端使用。
你还有其他方法吗?
不管怎样,想法就在这里:https://itnext.io/tackling-iphone-or-ipad-images-support-in-browser-8e3e64e9aaa1
如果你向我展示一个使用无服务器 API 的解决方案,也可以。重要的是文件来自 html 输入元素。
解决方案3
import loadImage …Run Code Online (Sandbox Code Playgroud) 所以我将图元文件(准确地说是EMF)转换为jpeg或gif(只要它与浏览器兼容并不重要),当我进行转换时,所有透明像素都变黑.我不知道如何在GDI +中执行此操作,但这是我用来保存文件的方法:
Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream)
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif)
Run Code Online (Sandbox Code Playgroud) 什么是将Bitmap和Png转换为字符串AND BACK AGAIN的最简单方法.我一直试图通过内存流等进行一些保存,但我似乎无法让它工作!
显然我不清楚,我想要的是能够将Bitmap类(带有图像)转换为系统字符串.从那里我希望能够将我的字符串抛出一点,然后将其转换回Bitmap以显示在PictureBox中.
我有一系列(.dcm)要转换为nii.gz文件的每位患者的 dicom 文件,但以下转换没有任何反应(甚至是错误信息)...
import dicom2nifti
dicom2nifti.settings.set_gdcmconv_path('C:/Program Files/GDCM 3.0/bin/gdcmconv.exe')
dicom2nifti.convert_directory('M0_1', 'M0_1.nii.gz')
Run Code Online (Sandbox Code Playgroud)
尝试其他方法时出现错误......
import dicom2nifti
dicom2nifti.settings.set_gdcmconv_path('C:/Program Files/GDCM 3.0/bin/gdcmconv.exe')
dicom2nifti.dicom_series_to_nifti('M0_1', 'M0_1.nii.gz')
Run Code Online (Sandbox Code Playgroud)
错误日志:
Traceback (most recent call last):
File ".\test.py", line 5, in <module>
dicom2nifti.dicom_series_to_nifti('M0_1', 'M0_1.nii.gz')
File "D:\Anaconda3\envs\pydicom\lib\site-packages\dicom2nifti\convert_dicom.py", line 78, in dicom_series_to_nifti
return dicom_array_to_nifti(dicom_input, output_file, reorient_nifti)
File "D:\Anaconda3\envs\pydicom\lib\site-packages\dicom2nifti\convert_dicom.py", line 112, in dicom_array_to_nifti
if not are_imaging_dicoms(dicom_list):
File "D:\Anaconda3\envs\pydicom\lib\site-packages\dicom2nifti\convert_dicom.py", line 151, in are_imaging_dicoms
if common.is_philips(dicom_input):
File "D:\Anaconda3\envs\pydicom\lib\site-packages\dicom2nifti\common.py", line 102, in is_philips
header = dicom_input[0]
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
文件结构:
M0_1 …Run Code Online (Sandbox Code Playgroud)