ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 11.12.2008, 14:08
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Добрый день.
У меня возникла загвоздка,а именно как на C# можно стереть все данные из картинки и записать туда свои,уточняю-нужно стереть все keywords из EXIF тега(его ID=0x9c9e) и записать туда свои которые например хранятся в массиве.
Заранее большое спасибо.
 

  #32  
Старый 11.12.2008, 15:02
procedure
Banned
Регистрация: 22.12.2007
Сообщений: 660
Провел на форуме:
3885269

Репутация: 1158


По умолчанию

Ну просматривать можно примерно так:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace Image
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

            string filename = "";

            Bitmap img = new Bitmap(filename);

            foreach (PropertyItem imgItem in img.PropertyItems)
                MessageBox.Show((Convert.ToString(img.Size)+ Convert.ToString(img.Tag)+
                    Convert.ToString(img.VerticalResolution)+ Convert.ToString(imgItem.Id)+
                    Convert.ToString(imgItem.Len)+ Convert.ToString(imgItem.Type)+
                    Convert.ToString(imgItem.Value)), "Свыше",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                //И еще много чего)))
        }

    }
}
Существует еще класс ImageCodecInfo.
А изменять EXIF можно так (код не мой):
Код:
private void WriteNewDescriptionInImage(string Filename,string NewDescription)
{
Image Pic;
PropertyItem[] PropertyItems;
byte[] bDescription=new Byte[NewDescription.Length];
int i;
string FilenameTemp;
Encoder Enc=Encoder.Transformation;
EncoderParameters EncParms=new EncoderParameters(1);
EncoderParameter EncParm;
ImageCodecInfo CodecInfo=GetEncoderInfo("image/jpeg");

// copy description into byte array
for (i=0;i<NewDescription.Length;i++) bDescription[i]=(byte)NewDescription[i];

// load the image to change
Pic=Image.FromFile(Filename);

// put the new description into the right property item
PropertyItems=Pic.PropertyItems; 
PropertyItems[0].Id=0x010e; // 0x010e as specified in EXIF standard
PropertyItems[0].Type=2;
PropertyItems[0].Len=NewDescription.Length;
PropertyItems[0].Value=bDescription;
Pic.SetPropertyItem(PropertyItems[0]);

// we cannot store in the same image, so use a temporary image instead
FilenameTemp=Filename+".temp";

// for lossless rewriting must rotate the image by 90 degrees!
EncParm=new EncoderParameter(Enc,(long)EncoderValue.TransformRotate90);
EncParms.Param[0]=EncParm;

// now write the rotated image with new description
Pic.Save(FilenameTemp,CodecInfo,EncParms);

// for computers with low memory and large pictures: release memory now
Pic.Dispose();
Pic=null;
GC.Collect();

// delete the original file, will be replaced later
System.IO.File.Delete(Filename); 

// now must rotate back the written picture
Pic=Image.FromFile(FilenameTemp);
EncParm=new EncoderParameter(Enc,(long)EncoderValue.TransformRotate270);
EncParms.Param[0]=EncParm;
Pic.Save(Filename,CodecInfo,EncParms);

// release memory now
Pic.Dispose();
Pic=null;
GC.Collect();

// delete the temporary picture
System.IO.File.Delete(FilenameTemp); 
}
 

  #33  
Старый 11.12.2008, 15:23
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Большое спасибо за потраченное время.
За просмотр конечно спасибо,но он не так важен(да и в гугле полно исходников чего не скажешь про запись),постараюсь интегрировать этот код к себе,позже отпишусь что-да как.)
 

  #34  
Старый 15.12.2008, 17:39
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Возник вопрос,а именно GetEncoderInfo для его использования нужны какие-либо дополнительные библиотеки?(Я использую Visual C# 2008 express).
В поиске он мне коечто выдал насчет этой функции,но ничего полезного.
 

  #35  
Старый 15.12.2008, 19:11
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

Репутация: 234
По умолчанию

Цитата из MSDN:
Цитата:
Obtains an encoder that converts a sequence of Unicode characters into an ASCII encoded sequence of bytes.

Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)
поэтому пишешь в своей проге using System.Text; и радуешься =)
 

  #36  
Старый 15.12.2008, 19:23
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

если бы все так было просто =/
Прописан у меня System.Text и всеравно пишет ошибку =/
 

  #37  
Старый 15.12.2008, 19:52
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

1. Framework какой?
2. Мб переустановить фраемворки?
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 

  #38  
Старый 15.12.2008, 21:50
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

фреймворк 3 или 3.5 точно не знаю.
З.Ы. сижу на висте.
 

  #39  
Старый 18.12.2008, 18:41
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Проблема с exifom решена-нашел на с++ хорошую прогу)
Теперь возник другой вопрос,а именно.
Сейчас приведу пример:у меня есть ArrayList и в нем содержится скажем 200 записей,большинство из них будут повторяться.
Вот собственно и вопрос существуют ли в C# встроенные функции которые смогут:
определить общее количество повторяющихся элементов,и в дальнейшем записать их и также их количество в двумерный массив:
Код:
массив[элемент][кол.повторений]
З.Ы. в ручную написать смогу,просто интерестно есть ли такие встроенные функции в C#.
 

  #40  
Старый 20.12.2008, 01:00
Kaas
Познающий
Регистрация: 13.02.2007
Сообщений: 41
Провел на форуме:
137010

Репутация: 26
По умолчанию

Цитата:
Сообщение от rudvil  
Проблема с exifom решена-нашел на с++ хорошую прогу)
Теперь возник другой вопрос,а именно.
Сейчас приведу пример:у меня есть ArrayList и в нем содержится скажем 200 записей,большинство из них будут повторяться.
Вот собственно и вопрос существуют ли в C# встроенные функции которые смогут:
определить общее количество повторяющихся элементов,и в дальнейшем записать их и также их количество в двумерный массив:
Код:
массив[элемент][кол.повторений]
З.Ы. в ручную написать смогу,просто интерестно есть ли такие встроенные функции в C#.
нет, в core я такого не видел)
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ