نمایش نتایج 1 تا 5 از 5

نام تاپیک: درمورد گرافیک

  1. #1

    درمورد گرافیک

    با سلام
    سوال:آیا تابعی برای اینکه یک تصویررا در یک فایل دودوئی ذخیره کنیم هست؟

  2. #2
    سلام.
    همه فایلها در ویندوز باینری هستن.
    به عبارت دیگه خود فایل تصویر شما باینری هست.
    شما دنبال چه قالبی هستین؟ (الگوی خاصی مد نظرتون هست؟)

  3. #3
    با تشکر از توجه شما
    راستش من یه پروژه رو دنبال میکنم که مربوط به درس گرافیک در دوره کاردانی میخواستم بدونم چه جوری میتونم به کدهای باینری تصویرم دسترسی داشته باشم که بعد بتونم با
    دستکاری کدهای باینری اندازه تصویر رو عوض کنم(کوچک و بزرگ)

  4. #4
    نه چنین تابعی نداریم تو اینترنت در مورد پرتکل فایلهای BMP جستجو کن

  5. #5
    شما اول باید مشخص کنید کدام فرمت را می خواهید باز و سپس تغییرات انجام دهید ، بعد باید به سایت شرکت سازنده یا هر مرجه دیگری مراجعه کنید تا از نحوه ذخیره سازی و فشرده سازی آن فرمت آگاه شوید.
    مثلا یک فایل BMP از ابتدای آن تا انتهای فایل شامل موارد زیر است.
    file header
    information header
    color table
    pixel bits

    در ویندوز و از طریق GDI به این شکل عمل می کنیم:
    ابتدا فایل را باز می کنیم (یعنی همان خواندن دودویی)و اشاره گری به struct آن می سازیم. (در سایر فرمت ها باید از struct ای استفاده کنید که شرکت سازنده معرفی کرده باشد)
    BITMAPFILEHEADER * pbmfh = LoadImageFunction (szFileName) ; 

    که تابع loadimage فوق را باید خودتان به ترتیب زیر تعریف کنید:
    -ابتدا باز کردن فایل با CreateFile یا هر تابع در زبان های دیگر
    - پیدا کردن اندازه فایل و اختصاص حافظه برای همان struct شما یعنی pbmfh
    - خواندن فایل و ریختن در حافظه فوق ReadFile

    بعد از طریق کد های زیر اشاره گری می سازید به دو بخش information برای هر نوع جزئیاتی و bit ها که شامل رنگ ها هستند .این یعنی اینکه مثلا pmbi به اندازه pbmfh بایت به علاوه یکی بره جلو و آن قسمت در فایل (که در حافظه لود شده) محل خواندن اطلاعات است.
    pbmi  = (BITMAPINFO *) (pbmfh + 1) ;
    pBits = (BYTE *) pbmfh + pbmfh->bfOffBits ;
    و مثلا برای خواندن طول و عرض عکس از همان struct تعریف شده استفاده می کنیم.
    cxDib = ((BITMAPCOREHEADER *) pbmi)->bcWidth ;
    cyDib = ((BITMAPCOREHEADER *) pbmi)->bcHeight ;


    حالا هر چه را که تغییر دادید (که در حافظه انجام شده) دوباره باید از طریق ساخت فایل دیگری آنها را save کنید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •