PDA

View Full Version : ذخیره تصاویر و غیر قابل نمایش بودن آنها



Mahtab_Tarsa
چهارشنبه 15 خرداد 1392, 20:29 عصر
با عرض سلام خدمت مهندسین گرامی
دوستان من یه کدی کار کردم که از صفحه عکس میگیره و اونارو تو یه دایرکتوری ذخیره میکنه با پسوند dll
حالا وقتی به اون دایرکتوری مراجعه میشه اگه فایلهای تصاویر رو یه نفر که اشنایی زیادی داشته باشه و تو یه نرم افزار دیگه مثل paint باز کنه تصاویر قابل نمایش میشه سوال من این هستش که چطور میشه کاری کرد که همین تصاویر فقط از طریق خود برنامه نمایش داده بشه و با نرم افزار های دیگه باز و قابل نمایش نباشه
با تشکر از کمکتون

littledemon
چهارشنبه 15 خرداد 1392, 20:52 عصر
راه های زیادی هست .
اگه کاربرانت زیاد حرفه ای نیستن ، میتونی یه بایت خاص در یه مکان از فایل بیخودی اضافه کنی و موقع خوندن برش داری. البته درست باید اضافه کنی چرا که بعضی اوقات اضافه کردن 1 بایت فقط باعث این میشه که یه خط بیافته رو تصویر یا یه جاش تار بشه ...

به خاطر همین شما با استفاده از یکی از روش های معمول و نه زیادی پیچیده . بیا و محتوای فایل رو Encrypt کن مثلا با الگوریتم (SHA1) . . . و بعد موقع بازکردن تو نرم افزار دیکدش کن .

من فکر نمی کنم نیازی باشه راه های سخت انتخاب بشه ... به هر حال این نظر من:لبخند:

Mahtab_Tarsa
جمعه 17 خرداد 1392, 17:09 عصر
راه های زیادی هست .
اگه کاربرانت زیاد حرفه ای نیستن ، میتونی یه بایت خاص در یه مکان از فایل بیخودی اضافه کنی و موقع خوندن برش داری. البته درست باید اضافه کنی چرا که بعضی اوقات اضافه کردن 1 بایت فقط باعث این میشه که یه خط بیافته رو تصویر یا یه جاش تار بشه ...

به خاطر همین شما با استفاده از یکی از روش های معمول و نه زیادی پیچیده . بیا و محتوای فایل رو Encrypt کن مثلا با الگوریتم (SHA1) . . . و بعد موقع بازکردن تو نرم افزار دیکدش کن .

من فکر نمی کنم نیازی باشه راه های سخت انتخاب بشه ... به هر حال این نظر من:لبخند:
سلام خدمتدوست عزیز
ممنون از جوابتون ولی تمام مواردی که شما فرمودید درست اما من نمیخام حجم کدهام زیادتر باشن برا همین دنبال
یه راه ساده تر و با کدهای کمتر به دلیل حجم برنامه اگه در این مورد کمکی داشته باشین ممنون میشمیعنی با اضافه
کردن کدهای انکریپت و دی کریپت حجم برنامه خیلی بالا میره و من میخام به مدلی بشه که انکریپت و دیکریپتش ساده
باشه با حجم کد کمتر نمیدونم تونستم منظورمو برسونم یا نه ممنون از تمام کسانی که برا این مطلب وقت میذارن
من فکر نمی کنم نیازی باشه راه های سخت انتخاب بشه ... به هر حال این نظر من:لبخند:

khokhan
جمعه 17 خرداد 1392, 17:52 عصر
سلام خدمتدوست عزیز
ممنون از جوابتون ولی تمام مواردی که شما فرمودید درست اما من نمیخام حجم کدهام زیادتر باشن برا همین دنبال
یه راه ساده تر و با کدهای کمتر به دلیل حجم برنامه اگه در این مورد کمکی داشته باشین ممنون میشمیعنی با اضافه
کردن کدهای انکریپت و دی کریپت حجم برنامه خیلی بالا میره و من میخام به مدلی بشه که انکریپت و دیکریپتش ساده
باشه با حجم کد کمتر نمیدونم تونستم منظورمو برسونم یا نه ممنون از تمام کسانی که برا این مطلب وقت میذارن
من فکر نمی کنم نیازی باشه راه های سخت انتخاب بشه ... به هر حال این نظر من:لبخند:
کدهای مربوط به رمزگزاری اطلاعات سرجمع ده بیست سطر بیشتر نیست فکر می کنین چقدر به حجم برنامه تون اضافه کنه :لبخند::متعجب:

tooraj_azizi_1035
جمعه 17 خرداد 1392, 20:30 عصر
رمز و رمز گشایی یک تصویر JPEG:

Encode:

int width = 128;
int height = width;
int stride = width / 8;
byte[] pixels = new byte[height * stride];

// Define the image palette
BitmapPalette myPalette = BitmapPalettes.Halftone256;

// Creates a new empty image with the pre-defined palette
BitmapSource image = BitmapSource.Create(
width,
height,
96,
96,
PixelFormats.Indexed1,
myPalette,
pixels,
stride);

FileStream stream = new FileStream("new.jpg", FileMode.Create);
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
TextBlock myTextBlock = new TextBlock();
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString();
encoder.FlipHorizontal = true;
encoder.FlipVertical = false;
encoder.QualityLevel = 30;
encoder.Rotation = Rotation.Rotate90;
encoder.Frames.Add(BitmapFrame.Create(image));
encoder.Save(stream);


Decode:


// Open a Stream and decode a JPEG image
Stream imageStreamSource = new FileStream("tulipfarm.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);
JpegBitmapDecoder decoder = new JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];

// Draw the Image
Image myImage = new Image();
myImage.Source = bitmapSource;
myImage.Stretch = Stretch.None;
myImage.Margin = new Thickness(20);