سؤال

أقوم بتطوير برنامج نصي باستخدام VBScript وأحتاج إلى التحقق من صحة ملف الإدخال باعتباره BMP 16 بت.

في الوقت الذي يكون فيه السيناريو مثل هذا:

Const OverwriteExisting = TRUE

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\16bmp.bmp" , "D:\test.bmp", OverwriteExisting

ولكن كيف يمكنني التحقق من صحة ملف الإدخال باعتباره BMP 16 بت؟



ملاحظة: تذكر أنني بحاجة إلى أن يكون هذا متوافقًا مع موقعي و Windows CE (سأقوم بتطوير برنامج له باستخدام NSBASIC).

هل كانت مفيدة؟

المحلول

لست متأكدًا من أنني جعلتك على صواب (أن اللغة الإنجليزية هي لغتي الثانية) ، ولكن إذا كنت بحاجة إلى التحقق مما إذا كان الملف هو صورة BMP 16 بت (وعدم التحقق من البكسلات الفعلية) ، فيمكنك الاستفادة من صورة Windows اكتساب (WIA) كائنات البرمجة النصية. هذا مثال:

Const wiaIDUnknown = "{00000000-0000-0000-0000-000000000000}"
Const wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"

Set oImg = CreateObject("Wia.ImageFile")

On Error Resume Next

oImg.LoadFile("C:\image.bmp")

If oImg.FormatID = wiaIDUnknown Then
  ' The file isn't an image file
Else
  Log.Message "Is BMP: " & (oImg.FormatID = wiaFormatBMP)
  Log.Message "Color depth: " & oImg.PixelDepth
End If

يتطلب هذا البرنامج النصي أن يكون لديك wiaaut.dll المكتبة مثبتة وتسجيلها على جهاز الكمبيوتر الخاص بك ؛ إذا لم يكن لديك ذلك ، يمكنك تنزيله كجزء من WIA SDK.

أنظر أيضا وثائق WIA على MSDN.

نصائح أخرى

سيكون عليك قراءة بيانات الملف ومقارنتها بـ مواصفات تنسيق BMP.

هناك ثلاث طرق أعرفها للعمل مع ملفات ثنائية في VBScript:

  1. باستخدام مكون ADODB. هذه الطريقة نوع من المحدودة. يمكنك العثور على مقال عنها في vbscript قراءة الملف الثنائي.
  2. يمكنك كتابة مكون COM الخاص بك والاتصال به من البرنامج النصي. فعلت بسرعة بحث جوجل ووجدت بعض المكونات الجاهزة التي توفر هذه الوظيفة.
  3. يمكنك أيضا التثبيت ImageMagick واستخدامه لتحديد BMP. قد يكون ذلك مبالغة لأغراضك.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top