مشکل اجرا شدن کد EXif در کامپیوتر مقصد
سلام خسته نباشید :قلب:
دوستان بنده یک تکه کد دارم EXIF که در کامپیوتر خودم اجرا میشه ولی در کامپیوتر دیگر اجرا نمیشه ، فکر کنم باید افزونه ای یا چیزی در کامپیوتر مقصد نصب کنم آیا؟
کار این کد اینه تاریخ ایجاد عکس رو میخونه و نمایش میده
using ExifLib;
try
{
using (var reader = new ExifLib.ExifReader(textBox10.Text))
{
DateTime dateTime;
reader.GetTagValue<DateTime>(ExifLib.ExifTags.Date TimeDigitized, out dateTime);
textbox4.Text = dateTime.ToString(CultureInfo.InvariantCulture);
}
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
marya0030
سلام خسته نباشید :قلب:
دوستان بنده یک تکه کد دارم EXIF که در کامپیوتر خودم اجرا میشه ولی در کامپیوتر دیگر اجرا نمیشه ، فکر کنم باید افزونه ای یا چیزی در کامپیوتر مقصد نصب کنم آیا؟
کار این کد اینه تاریخ ایجاد عکس رو میخونه و نمایش میده
using ExifLib;
try
{
using (var reader = new ExifLib.ExifReader(textBox10.Text))
{
DateTime dateTime;
reader.GetTagValue<DateTime>(ExifLib.ExifTags.Date TimeDigitized, out dateTime);
textbox4.Text = dateTime.ToString(CultureInfo.InvariantCulture);
}
در پروژه خودتون دنبال ExifLib.dll بگردید. کنار فایل اجرایی exe برنامه تون اون فایل ExifLib.dll رو نگهدارید. روی هر سیستمی اجراش می کنید اون ExifLib.dll کنارش بمونه. اگه حذفش کنید باز نمیشه.
2 ضمیمه
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
the king
در پروژه خودتون دنبال ExifLib.dll بگردید. کنار فایل اجرایی exe برنامه تون اون فایل ExifLib.dll رو نگهدارید. روی هر سیستمی اجراش می کنید اون ExifLib.dll کنارش بمونه. اگه حذفش کنید باز نمیشه.
دوست عزیز با هزار بدبختی تا عیبش فهمیدم البته صددرصد مطمئن نیستم این دو عکس ببینید تفاوت در چیدمان تاریخ در عکس دومی تاریخ عکس گرفته شده اشتباه درج شده همین زمان تبدیل به شمسی مشکل بر میخوورد لطفا راهنمایی کنید
ضمیمه 151123
ضمیمه 151124
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
عکسی که من همیشه تست میکنم عکسی هست که تاریخش درست ثبت شده ولی عکسایی که در کامپیوتر مقصد هست این مشکل دارند نمیدونم چطور مشکل حل کنم کدهای تبدیل خدمتتان میزارم
try
{
using (var reader = new ExifLib.ExifReader(textBox10.Text))
{
DateTime dateTime;
reader.GetTagValue<DateTime>(ExifLib.ExifTags.Date TimeOriginal, out dateTime);
textbox4.Text = dateTime.ToString(CultureInfo.InvariantCulture);
}
//----------------------------------------------
PersianCalendar p = new PersianCalendar();
DateTime dt = Convert.ToDateTime(textbox4.Text);
int y, m, d;
y = p.GetYear(dt);
m = p.GetMonth(dt);
d = p.GetDayOfMonth(dt);
textbox4.Text = y.ToString() + "/"
+ m.ToString() + "/"
+ d.ToString();
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
واقعا نمیدونم مشکل از اینه یا چیز دیگر ؟؟؟؟
1 ضمیمه
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
ببنید در عکس اول تاریخ درست به شمسی نمایش میدهد ولی در عکس دوم تاریخ به صورت زیر نمایش میدهد واقعا کلافه شدم و نمیدونم مشکل از چی هست
ضمیمه 151125
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
من یک چیزی که متوجه شدم اینه که تبدیل تاریخ میلادی به شمسی را برداشتم بازم برای عکسا همین تاریخ بالا مینویسه به عبارتی این قسمت از کد که قرمز شده اجرا میکند دلیلی نمیتونم بفهمم چرا عکس اولی مشکلی ندارد ولی عکس دوم این مشکل را دارد
try
{
using (var reader = new ExifLib.ExifReader(textBox10.Text))
{
DateTime dateTime;
reader.GetTagValue<DateTime>(ExifLib.ExifTags.Date TimeOriginal, out dateTime);
textbox4.Text = dateTime.ToString(CultureInfo.InvariantCulture);
/*
PersianCalendar p = new PersianCalendar();
DateTime dt = Convert.ToDateTime(textbox4.Text);
int y, m, d;
y = p.GetYear(dt);
m = p.GetMonth(dt);
d = p.GetDayOfMonth(dt);
textbox4.Text = y.ToString() + "/"
+ m.ToString() + "/"
+ d.ToString();
*/
}
}
catch (Exception ex)
{
}
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
marya0030
دوست عزیز با هزار بدبختی تا عیبش فهمیدم البته صددرصد مطمئن نیستم این دو عکس ببینید تفاوت در چیدمان تاریخ در عکس دومی تاریخ عکس گرفته شده اشتباه درج شده همین زمان تبدیل به شمسی مشکل بر میخوورد لطفا راهنمایی کنید
ضمیمه 151123
ضمیمه 151124
تاریخی که در Exif ثبت میشه استاندارد داره و باید فرمت "YYYY:MM:DD HH:MM:SS" باشه، اما فرض کنیم شما تصویری دارید که YYYY:MM:DD اش YYYY:DD:MM شده.
اولا try catch فراموش نشه، ثانیا می توانیم Date رو string بخونیم و قبل از تبدیل به DateTime این مورد رو بررسی کنیم :
try
{
using (var reader = new ExifLib.ExifReader(textBox1.Text))
{
string dateTimeText;
var dateRegex = new System.Text.RegularExpressions.Regex("(?<year>\\d{ 4})(?<s1>[^\\d])(?<month>\\d{2})(?<s2>[^\\d])(?<day>\\d{2})");
reader.GetTagValue<string>(ExifLib.ExifTags.DateTi me, out dateTimeText);
var match = dateRegex.Match(dateTimeText);
if ((match.Success))
{
if ((int.Parse(match.Groups["month"].Value) > 12) && (int.Parse(match.Groups["day"].Value) <= 12))
{
dateTimeText = dateRegex.Replace(dateTimeText, "${day}/${month}/${year}");
}
else
{
dateTimeText = dateRegex.Replace(dateTimeText, "${month}/${day}/${year}");
}
var dateTime = DateTime.Parse(dateTimeText, CultureInfo.InvariantCulture);
textBox2.Text = dateTime.ToString("yyyy/MM/dd HH:mm:ss");
}
}
}
catch (Exception ex)
{
textBox2.Text = ex.Message;
}
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
marya0030
سلام خسته نباشید :قلب:
دوستان بنده یک تکه کد دارم EXIF که در کامپیوتر خودم اجرا میشه ولی در کامپیوتر دیگر اجرا نمیشه ، فکر کنم باید افزونه ای یا چیزی در کامپیوتر مقصد نصب کنم آیا؟
کار این کد اینه تاریخ ایجاد عکس رو میخونه و نمایش میده
using ExifLib;
try
{
using (var reader = new ExifLib.ExifReader(textBox10.Text))
{
DateTime dateTime;
reader.GetTagValue<DateTime>(ExifLib.ExifTags.Date TimeDigitized, out dateTime);
textbox4.Text = dateTime.ToString(CultureInfo.InvariantCulture);
}
برای خوندن تگ ها میتونید از استاندارد خود ماکروسافت استفاده کنید پکیج ناگت زیر رو نصب کنید و براحتی باهاش کار کنید
Microsoft.WindowsAPICodePack.Shell
Microsoft.Windows.Shell
هردورو نصب کنید
نمونه کد
https://stackoverflow.com/a/37987288/11453013
2 ضمیمه
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
the king
تاریخی که در Exif ثبت میشه استاندارد داره و باید فرمت "YYYY:MM:DD HH:MM:SS" باشه، اما فرض کنیم شما تصویری دارید که YYYY:MM:DD اش YYYY:DD:MM شده.
اولا try catch فراموش نشه، ثانیا می توانیم Date رو string بخونیم و قبل از تبدیل به DateTime این مورد رو بررسی کنیم :
try
{
using (var reader = new ExifLib.ExifReader(textBox1.Text))
{
string dateTimeText;
var dateRegex = new System.Text.RegularExpressions.Regex("(?<year>\\d{ 4})(?<s1>[^\\d])(?<month>\\d{2})(?<s2>[^\\d])(?<day>\\d{2})");
reader.GetTagValue<string>(ExifLib.ExifTags.DateTi me, out dateTimeText);
var match = dateRegex.Match(dateTimeText);
if ((match.Success))
{
if ((int.Parse(match.Groups["month"].Value) > 12) && (int.Parse(match.Groups["day"].Value) <= 12))
{
dateTimeText = dateRegex.Replace(dateTimeText, "${day}/${month}/${year}");
}
else
{
dateTimeText = dateRegex.Replace(dateTimeText, "${month}/${day}/${year}");
}
var dateTime = DateTime.Parse(dateTimeText, CultureInfo.InvariantCulture);
textBox2.Text = dateTime.ToString("yyyy/MM/dd HH:mm:ss");
}
}
}
catch (Exception ex)
{
textBox2.Text = ex.Message;
}
ببنید دوست عزیز من با کد بالا جواب نگرفتم ولی مشکل کامل فهمیدم لطفا عکس اول و دوم ببیند
عکس 1
ضمیمه 151137
عکس 2
ضمیمه 151138
ببیند با یک نگاه دقیق میتونید بفهمید که عکس اولی تاریخش ق . ظ و عکس دومی ب . ظ
حالا برنامه من تاریخ تمام عکس هایی که "ق . ظ " نمایش میده ولی ب .ظ با کمال شگفتی نه نشون نمیده
اینم ککدهام که صفرتا صدشو خودت زحمتش کشیدی ممنون میشم کمکم کنی
try
{
using (var reader = new ExifLib.ExifReader(textBox10.Text))
{
DateTime dateTime1;
reader.GetTagValue<DateTime>(ExifLib.ExifTags.Date Time, out dateTime1);
textbox4.Text = dateTime1.ToString(CultureInfo.InvariantCulture);
PersianCalendar p = new PersianCalendar();
DateTime dt = Convert.ToDateTime(textbox4.Text);
int y, m, d;
y = p.GetYear(dt);
m = p.GetMonth(dt);
d = p.GetDayOfMonth(dt);
textbox4.Text = y.ToString() + "/"
+ m.ToString() + "/"
+ d.ToString();
}
}
catch (Exception ex)
{
textbox4.Text = "";
}
}
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
در ضمن خدمتتان عرض کنم تاریخ شمسی همین الان کلا برداشتم حتی تاریخ قمری رو هم نمیاره
پس نتیجه میگیریم کد تبدیل تاریخ شمسی به قمری مشکی ندارد
نمیدونم چرا عکساسی که تاریخ آنها ب . ظ داره نشون نمیده :عصبانی++:
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
barnamenevisjavan
برای خوندن تگ ها میتونید از استاندارد خود ماکروسافت استفاده کنید پکیج ناگت زیر رو نصب کنید و براحتی باهاش کار کنید
Microsoft.WindowsAPICodePack.Shell
Microsoft.Windows.Shell
هردورو نصب کنید
نمونه کد
https://stackoverflow.com/a/37987288/11453013
دوست عزیز با این کد به هیچ نتیجه ای نرسیدم :(
1 ضمیمه
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
marya0030
دوست عزیز با این کد به هیچ نتیجه ای نرسیدم :(
متد TryParseDateTime رو که ضمیمه می کنم امتحان کنید، AM و PM و ق.ظ و ب.ظ و ارقام فارسی هندی عربی و تقویم میلادی و شمسی و YYYY/MM/DD و DD/MM/YYYY و YYYY/DD/MM و ... رو هم پشتیبانی میکنه.
ضمیمه 151141
پیوستش کردم چون این اسکریپت درج کد داخل فروم باگ داره و وسط عبارات فاصله اضافی میندازه و به لعنت حق نمی ارزه.
try
{
using (var reader = new ExifLib.ExifReader(textBox1.Text))
{
string dateTimeText;
reader.GetTagValue<string>(ExifLib.ExifTags.DateTi me, out dateTimeText);
DateTime dateTime;
if (TryParseDateTime(dateTimeText, out dateTime))
{
textBox2.Text = dateTime.ToString("yyyy/MM/dd HH:mm:ss");
}
else
{
textBox2.Text = "Invalid Date/Time";
}
}
}
catch (Exception ex)
{
textBox2.Text = ex.Message;
}
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
the king
متد TryParseDateTime رو که ضمیمه می کنم امتحان کنید، AM و PM و ق.ظ و ب.ظ و ارقام فارسی هندی عربی و تقویم میلادی و شمسی و YYYY/MM/DD و DD/MM/YYYY و YYYY/DD/MM و ... رو هم پشتیبانی میکنه.
ضمیمه 151141
پیوستش کردم چون این اسکریپت درج کد داخل فروم باگ داره و وسط عبارات فاصله اضافی میندازه و به لعنت حق نمی ارزه.
try
{
using (var reader = new ExifLib.ExifReader(textBox1.Text))
{
string dateTimeText;
reader.GetTagValue<string>(ExifLib.ExifTags.DateTi me, out dateTimeText);
DateTime dateTime;
if (TryParseDateTime(dateTimeText, out dateTime))
{
textBox2.Text = dateTime.ToString("yyyy/MM/dd HH:mm:ss");
}
else
{
textBox2.Text = "Invalid Date/Time";
}
}
}
catch (Exception ex)
{
textBox2.Text = ex.Message;
}
تشکرررررر مشکلم حل نشد از کدهای قبلی شما استفاده کردممم :قلب:
نقل قول: مشکل اجرا شدن کد EXif در کامپیوتر مقصد
نقل قول:
نوشته شده توسط
the king
پیوستش کردم چون این اسکریپت درج کد داخل فروم باگ داره و وسط عبارات فاصله اضافی میندازه و به لعنت حق نمی ارزه.
try
{
using (var reader = new ExifLib.ExifReader(textBox1.Text))
{
string dateTimeText;
reader.GetTagValue<string>(ExifLib.ExifTags.DateTi me, out dateTimeText);
DateTime dateTime;
if (TryParseDateTime(dateTimeText, out dateTime))
{
textBox2.Text = dateTime.ToString("yyyy/MM/dd HH:mm:ss");
}
else
{
textBox2.Text = "Invalid Date/Time";
}
}
}
catch (Exception ex)
{
textBox2.Text = ex.Message;
}
دوست عزیز یک بار که ویرایش کنید درست میشه برای من هم چند بار اتفاق افتاد اما با ویرایش سریع درست شد.