[CDR 2024] Скрипт для установки CMYK 8

ТЗ закащщика.
 
Автоматическая генерация белой для уф-печати?
 
Этого кстати, не было. Чаще фанеру тупо красят в белый цвет. Естественно, дешевле, чем печатать подложку.
 
Если сохранить cdr с этим эффектом и поискать внутри, то можно найти это:
Код:
{"EqualizeEffect":{"AutoAdjust":"0","AutoBlack":"5","AutoWhite":"5","Channel":"0","Gamma":"<3>100<3>100<3>100<3>100<3>100","InputHigh":"<3>255<3>255<3>255<3>255<3>255","InputLow":"<1>0<1>0<1>0<1>0<1>0","OutputHigh":"<3>255<3>255<3>255<3>255<3>255","OutputLow":"<1>8<1>0<1>0<1>0<1>0","ParamAutoAdjust":"0"}
В параметре OutputLow та самая восьмёрка. Но как переформатировать эту строку для ApplyBitmapEffect я не понял. Все попытки приводили к вылету CorelDraw.
 
Вот и я о том же.
 
Тебе корел?
 
Именно в нём, CorelDraw 2024 64 бит. Править все растровые картинки в файле. Активная страница одна, без многостраничности. Типа такой Дрысисиси
Скриншот 02.06.26_05.20.28.png
 
Последнее редактирование:
Поздние версии корела не подошли по одной причине - не работает запись файла в бэкграунде, хотя галка есть.
 
Файл-то где?
 
А кто этих чертей в Корел запихал? Почему бы сначала не отредактировать их, а потом уже пихать? Ну и линками, а не внедрять.
 
как переформатировать эту строку
Мой нейромозг предлагает так:

Код:
Sub ApplyLevelsToAllBitmaps()
    Dim s As Shape
    Dim effStr As String
    
    ' Формируем строку параметров на основе вашего JSON
    ' Устанавливаем выходной минимум (OutputLow) для CMYK совмещенного канала
    effStr = "EqualizeEffect AutoAdjust=0,AutoBlack=5,AutoWhite=5,Channel=0," & _
             "Gamma=100|100|100|100|100,InputHigh=255|255|255|255|255,InputLow=0|0|0|0|0," & _
             "OutputHigh=255|255|255|255|255,OutputLow=8|0|0|0|0,ParamAutoAdjust=0"
            
    ' Оптимизация: отключаем обновление экрана во время работы макроса
    Optimization = True
    ActiveDocument.BeginCommandGroup "Apply Batch Levels"
    
    ' Проходим циклом по всем объектам на текущей странице
    For Each s In ActivePage.Shapes
        ' Проверяем, является ли объект растровой картинкой
        If s.Type = cdrBitmapShape Then
            ' Применяем эффект "Уровни" с нашими параметрами
            s.Bitmap.ApplyBitmapEffect "Equalize", effStr
        End If
    Next s
    
    ActiveDocument.EndCommandGroup
    Optimization = False
    ActiveWindow.Refresh
    
    MsgBox "Готово! Эффект применен ко всем картинкам на странице.", vbInformation
End Sub
 
Ситуёвина такая, что у производителя именно в кореле окончательная обработка - CMYK=8, обтравка (не вопрос), контур реза - не вопрос. Линки не канают - во-первых кривовато, во-вторых файл отправляется закащщику.
 
Вылетает на цикле, причём вылетает корел. Эти нейромозги я уже затрахал по-полной)) Благодарю, сам уже нашёл самый доступный вариант. Нажатие одной кнопки и выставление нужного значения.
Скриншот 07.06.26_15.39.28.png
 
Последнее редактирование:
Corel X3 записывает макрос примерно так:
Код:
ActiveSelectionRange.Shapes.First.Bitmap.ApplyBitmapEffect "Levels", "EqualizeEffect EqualizeAutoAdjust=0,EqualizeAutoBlack=5,EqualizeAutoWhite=5,EqualizeHistAuto=1,EqualizeHigh1=255,EqualizeHigh2=255,EqualizeHigh3=255,EqualizeHigh4=255,EqualizeHigh5=255,EqualizeHighDef1=255,EqualizeHighDef2=255,EqualizeHighDef3=255,EqualizeHighDef4=255,EqualizeHighDef5=255,EqualizeLow1=8,EqualizeLow2=0,EqualizeLow3=0,EqualizeLow4=0,EqualizeLow5=0,EqualizeLowDef1=0,EqualizeLowDef2=0,EqualizeLowDef3=0,EqualizeLowDef4=0,EqualizeLowDef5=0,EqualizeMid1=100,EqualizeMid2=100,EqualizeMid3=100,EqualizeMid4=100,EqualizeMid5=100,EqualizeOutputHigh1=255,EqualizeOutputHigh2=255,EqualizeOutputHigh3=255,EqualizeOutputHigh4=255,EqualizeOutputHigh5=255,EqualizeOutputLow1=0,EqualizeOutputLow2=0,EqualizeOutputLow3=0,EqualizeOutputLow4=0,EqualizeOutputLow5=0"
В свежих версиях не работает
 
Скриншот 07.06.26_15.46.40.png