Что нового

Изменение в строке .jpg .png файлов

saraconor

Новичок
Сообщения
404
Репутация
3
Допустим есть такое изображение:
j3z6vnft.jpg

в коде файла (в самом низу) есть надпись: §§§_Тестовая строка
Как можно удалить или изменить эту надпись? Я как ни пробую, не выходит выцепить строки в jpg. png. файлах. Такое ощущение что они там все слиты в 1 строку.
Добавить в конец файла строку -пожалуйса, а удалить или изменить именно ее никак не выходит.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
С нетекстовыми файлами, нет смысла работать построчно. Так как в них байты, которые обозначают возврат каретки CR и перевод строки LF, являются просто байтами данных. А порой могут просто отсутствовать.
 
Автор
S

saraconor

Новичок
Сообщения
404
Репутация
3
Может есть возможность изменить текст если он между такими символами будет: §§§_Тестовая строка_§§§ ?
пс. текст может быть самый разный.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Ну да, можно. Через обычный FileWrite. Вот рабочий пример
Код:
#include <Array.au3> ; for _ArrayDisplay

;writing;
$hFile = FileOpen("test.exe", 1)
If $hFile = -1 Then
MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
Exit 1
EndIf
FileWriteLine($hFile, "")
FileWriteLine($hFile, "STARTEOF")
FileWriteLine($hFile, "Privet")
FileWriteLine($hFile, "ENDEOF")
FileClose($hFile)

;====================================================================================================;
Sleep(500)
;reading;
$hFile = FileOpen("test.exe", 0)
If $hFile = -1 Then
MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
Exit 2
EndIf
Local $sPattern="(?s)\r\nSTARTEOF\r\n(.*?)\r\nENDEOF\r\n"
Local $sData=FileRead($hFile)
Local $aReadData=StringRegExp($sData, $sPattern, 3)
;ConsoleWrite('==Debug('&@ScriptLineNumber&'):'&@CRLF&'>Error code: '&@error&@CRLF)
FileClose($hFile)
_ArrayDisplay($aReadData, "reading data from exe file")
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
saraconor
между такими символами
Код:
$str = "строка для замены"
$text = FileRead("111.jpg")
$text = StringRegExpReplace($text, "§§§_.*?_§§§", "§§§_" & $str & "_§§§")
$f = FileOpen("111.jpg", 2)
FileWrite($f, $text)
FileClose($f)
 
Автор
S

saraconor

Новичок
Сообщения
404
Репутация
3
Спасибо. (надо учить регулярные выражения)
 
Верх