1 (изменено: shahlik002, 2017-08-29 16:03:22)

Тема: AHK: Преобразование картинки в набор цифр

Есть картинка с заданными цветами пикселей.
У меня есть все эти пиксели , коды цветов и прочее.
Мне нужно преобразовать каждый пиксель картинки в порядковый номер цвета.

Есть вот такая наработка:

SetTitleMatchMode,2

gui,add,edit,vcolors w150 r1 	x10		y10			,6
gui,add,edit,vfil w150 r2			x170	y10		ReadOnly				
gui,add,edit,vHeight w150 r1		x10		y35		,96
gui,add,edit,vwidth w150 r1		x10		y60			,80
gui,add,Button,gB1 x+ w50, File
gui,add,Button,gB2 x+ w50, start
gui,show
return
GuiClose:
GuiEscape:
ExitApp
b1:
FileSelectFile,file
ff:= RegExReplace(file,".*\\","")
GuiControl,text,fil,%ff%
return
b2:
Clipboard:=
;~ InputBox,colors,введите количество цветов,,100
gui,submit,nohide
if file=
	return
run,Notepad.exe %file%,,max,PID
WinWait,Блокнот
PostMessage,0x111,25,00000019,,ahk_pid %pid%
PostMessage,0x111,769,00000301,,ahk_pid %pid%
PostMessage,0x02,,,,ahk_pid %pid%

sleep 1000
StringTrimLeft,Clipboard,Clipboard,1078
if colors = 2
	StringReplace,Clipboard,Clipboard,,1,all
else if colors = 3
	{
	StringReplace,Clipboard,Clipboard,,1,all
	StringReplace,Clipboard,Clipboard,,2,all
	}
else if colors = 4
	{
	StringReplace,Clipboard,Clipboard,,1,all
	StringReplace,Clipboard,Clipboard,,2,all
	StringReplace,Clipboard,Clipboard,,3,all
	}
else if colors = 5
	{
	StringReplace,Clipboard,Clipboard,,1,all
	StringReplace,Clipboard,Clipboard,,2,all
	StringReplace,Clipboard,Clipboard,,3,all
	StringReplace,Clipboard,Clipboard,,4,all
	}
else if colors = 6
	{
	StringReplace,Clipboard,Clipboard,,1,all
	StringReplace,Clipboard,Clipboard,,2,all
	StringReplace,Clipboard,Clipboard,,3,all
	StringReplace,Clipboard,Clipboard,,4,all
	StringReplace,Clipboard,Clipboard,,5,all
	}
else if colors = 7
	{
	StringReplace,Clipboard,Clipboard,,1,all
	StringReplace,Clipboard,Clipboard,,2,all
	StringReplace,Clipboard,Clipboard,,3,all
	StringReplace,Clipboard,Clipboard,,4,all
	StringReplace,Clipboard,Clipboard,,5,all
	StringReplace,Clipboard,Clipboard,,6,all
	}
else if colors = 8
	{
	StringReplace,Clipboard,Clipboard,,1,all
	StringReplace,Clipboard,Clipboard,,2,all
	StringReplace,Clipboard,Clipboard,,3,all
	StringReplace,Clipboard,Clipboard,,4,all
	StringReplace,Clipboard,Clipboard,,5,all
	StringReplace,Clipboard,Clipboard,,6,all
	StringReplace,Clipboard,Clipboard,,7,all
	}
StringReplace,Clipboard,Clipboard,%A_Space%,8,all

a:=0
sall=

loop, parse, clipboard
{
sall.=A_LoopField
a++
if a=%height%
{
	a:=0
	sAll.="`n"
}
}

FileSelectFile ,folder,S,
FileAppend,%height%`n,%folder%.txt
FileAppend,%width%`n,%folder%.txt
FileAppend,%sAll%`n,%folder%.txt
return

f2:: Reload
;~  ,,,,,,,
;~ 1078

Она делает что мне нужно только с 2-8 оттенками серого из 8 битной картинки формата bmp.
Редактирую с помощью paint.net -> Коррекция -> Огрубление -> галочка Синхронизация , Ползунки 2-8.
Но нужно ввести размер и количество цветов вручную.

2

Re: AHK: Преобразование картинки в набор цифр

Вроде бы подобрал формат (.dds)
Нужно найти все unicode символы 1-255.

3

Re: AHK: Преобразование картинки в набор цифр

Получил вот такую строку:


 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя

4

Re: AHK: Преобразование картинки в набор цифр

Тут повторяется перевод строки , поэтому не подходит .
Есть способ напрямую получить закодированный текст?

5

Re: AHK: Преобразование картинки в набор цифр

Непонятно, зачем это всё. Какой смысл-то?

6

Re: AHK: Преобразование картинки в набор цифр

Напрямую - это как?
Есть base64, не нравится размер - делаете свою ф-ию, где пропускаете "неудобные" символы, подавая номер символа в конструкцию условного оператора. Я так делал на vbs, но в ahk есть способ присваивания переменной, где символы переноса и кавычки не мешают = ( ).

7 (изменено: shahlik002, 2017-08-30 17:37:02)

Re: AHK: Преобразование картинки в набор цифр

stealzy
А  вот тут ,пожалуйста, по подробнее.
У меня есть файлик где храниться нужная мне информация , по факту это значения чисел 0-2^8 (0-256) , что в сочетании по 3 шт. являют собой цвет пикселя.
Эти числа при сохранении кодируются неизвестным мне образом.
Позже я могу открыть файл изображения с помощью блокнота и скопировать всю картинку(для дальнейшей обработки), только в юникоде .
А так как там некоторые значения не несут за собой символа - у меня из рук все валиться .

Как я понял из ваших слов - мне нужно создать свою кодировку.
Но вот только я не знаю как , да и потом с помощью нее придется открывать файлы...

Может есть какой-либо другой путь?
Если нет , то смотрим в сторону base256.

8 (изменено: stealzy, 2017-08-30 20:28:32)

Re: AHK: Преобразование картинки в набор цифр

YMP пишет:

зачем это всё?

Если нужно сохранить картинку в коде - base64, если нужно узнать/поменять цвет пикселя в картинке - это другая тема.

9

Re: AHK: Преобразование картинки в набор цифр

stealzy
Так речь про какой-то порядковый номер цвета. Я не знаю, что это такое, а вы? Потом речь идёт про файлик с информацией, которую можно истолковать, как обозначения цветов картинки. Или это и есть картинка? Мне не понятно, а вам?

10

Re: AHK: Преобразование картинки в набор цифр

YMP пишет:

Так речь про какой-то порядковый номер цвета. Я не знаю, что это такое, а вы?

RGB.

11

Re: AHK: Преобразование картинки в набор цифр

У меня это не вяжется с понятием "порядковый номер".