من به سناریویی برخوردم که در آن باید فایل های geoTiff را به صورت انبوه به تصاویر png یا jpg تبدیل می کردم تا توسط کد مصرف شوند و در وب سایت نمایش داده شوند. بنابراین تصمیم گرفتم برای انجام این کار اسکریپت Powershell بنویسم. این مقاله کد تبدیل فایل های tiff به png/jpg را توضیح می دهد.
GeoTiff
پسوند فایل GeoTIFF(.tif/.tiff) حاوی ابرداده های جغرافیایی است که مکان واقعی در فضایی را که هر پیکسل در یک تصویر نشان می دهد، توصیف می کند. در ایجاد یک فایل GeoTIFF، اطلاعات مکانی در فایل .tif به عنوان تگ های جاسازی شده گنجانده می شود که می تواند شامل ابرداده های تصویر شطرنجی مانند:
- داده های افقی و عمودی
- وسعت فضایی، یعنی منطقه ای که مجموعه داده پوشش می دهد
- سیستم مرجع مختصات (CRS) که برای ذخیره داده ها استفاده می شود
- وضوح فضایی، که در تعداد مقادیر پیکسل مستقل در واحد طول اندازه گیری می شود
- تعداد لایه های فایل .tif
- بیضیها و ژئوئیدها - مدلهای تخمینی شکل زمین
- قوانین ریاضی برای طرح ریزی نقشه برای تبدیل داده های یک فضای سه بعدی به یک نمایشگر دو بعدی
Jpg/Png
اینها فرمت های عکس معمولی هستند که می توانند به راحتی در برنامه های استاندارد برای نمایش تصویر استفاده شوند
پاورشل
PowerShell روی ویندوز، لینوکس و macOS اجرا می شود. PowerShell یک راه حل اتوماسیون وظیفه بین پلتفرمی است که از یک پوسته خط فرمان، یک زبان برنامه نویسی و یک چارچوب مدیریت پیکربندی تشکیل شده است.
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true)]
[string] $path = 'c:tifffilessample01_Images', #path to files[Parameter(Mandatory = $true)]
[string] $jpgOrpng = 'png')
if (Test - Path $path) {
$files = Get - ChildItem - Path $path - Filter * .tif - Recurse - ErrorAction SilentlyContinue - Force | select FullName;
echo $files;
#Load required assemblies and get object reference[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out - Null
foreach($file in $files) {
$convertfile = new - object System.Drawing.Bitmap($file.Fullname)
$newfilname = ($file.Fullname - replace '([^.]).tif', '$1') + "." + $jpgOrpng
$convertfile.Save($newfilname, $jpgOrpng)
$file.Fullname
}
} else {
Write - Host "Path not found."
}
}
استفاده
1. tiff/geotiff را به png تبدیل کنید
ConvertImage -path 'E:projectsfiles' -jpgOrpng 'png'