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

И да, задаёт параметр CMYK=8 всем выделенным битмапам.
 
А их тебе прям в Кореле отдают? Или все же pdf или еще чтото?
 
И да, задаёт параметр CMYK=8 всем выделенным битмапам.
Стоп, погоди-ка, так тебе надо что - всевсевсе небелые цвета в черный перевести, чтобы подложку сделать, что ли? Так просто все уже было - у Санчеса или woxxomа в пакете тулзов был макрос генерации обтравочной маски - он именно так реализован был! Если сам не найдешь, спроси прямо у Санчеса - ты ж с ним общаешься, вроде!
 
надо что - всевсевсе небелые цвета в черный перевести
Нет, ему надо у картинок сдвинуть уровень 100% на 8% во всех цветах. То есть увеличить плотность красок.
 
Последнее редактирование:
  • Спасибо
Реакции: mnemonix
Тени осветлить слегка.
Сдвиг уровня на 8% означает, что там где было 92% станет 100%, то есть все цвета станут плотнее. На счет единиц не уверен - корелом не пользуюсь, но судя по тексту скрипта в правы насчет размерности, то есть в 100% превратятся не 92, а 97%.
 
Не проще скриптом экспортнуть все в pdf, там preflightoм или с помощью pitstop action поправить значения и импортировать обратно? Медленнее, но гарантированно работает
 
Парни, весь воркфлоу в кореле.
Да, становится чуть плотнее и темнее, это уже к печатникам вопрос, зачем им такое:
1780865306804.png
 
Печать на акриле и фанере. Апскейлю пакетно, установил прогу, бесплатно и быстро, не нарадуюсь) Если не устанавливать папку вывода, то в существующкй папке создаётся подпапка с проапскейленым.
1780867090560.png

1780867205981.png
 

Вложения

  • 1780867195535.png
    1780867195535.png
    115.9 КБ · Просм.: 8
Последнее редактирование:
Оно или не?
Код:
Sub CMYK8()
 Dim Tile As ImageTile
 Dim PixelData() As Byte
 Dim i As Long
 Dim Image As Image
 Set Image = ActiveSelectionRange.Shapes.First.Bitmap.Image.GetCopy
 For Each Tile In Image.Tiles
  PixelData = Tile.PixelData
  For i = 0 To Tile.BytesPerTile - 1
    If PixelData(i) < 8 Then
      PixelData(i) = 8
    End If
  Next
  Tile.PixelData = PixelData
 Next
 ActiveSelectionRange.Shapes.First.Bitmap.SetImageData Image
End Sub
 
  • Спасибо
Реакции: dastin и mnemonix
Оно 'cooll)' Только отрабатывает одно выделенное изображение изображение, а не все.
 
Было бы здорово, если не выделять заранее, а перебирать все и применять эффект, так как в проекте легко может быть более 100+ изображений на странице.
 
Последнее редактирование:
А, вот оно, сделал:

Sub CMYK8_AllBitmapsOnPage()
Dim s As Shape
Dim img As Image
Dim Tile As ImageTile
Dim PixelData() As Byte
Dim i As Long
Application.Optimization = True
For Each s In ActivePage.Shapes
If s.Type = cdrBitmapShape Then
Set img = s.Bitmap.Image.GetCopy
For Each Tile In img.Tiles
PixelData = Tile.PixelData
For i = 0 To Tile.BytesPerTile - 1
If PixelData(i) < 8 Then
PixelData(i) = 8
End If
Next i
Tile.PixelData = PixelData
Next Tile
s.Bitmap.SetImageData img
End If
Next s
Application.Optimization = False
ActiveWindow.Refresh
End Sub
 
  • Спасибо
Реакции: dastin
Всё заработало!
 
Сердечно благодарю тебя, fersat! 'yes'

P.S. Добавил ещё сохранение файла.
 
Всё таки если сравнивать результаты пипеткой, то Levels работает по-другому. Значения больше 8 тоже увеличиваются.

Наверное правильнее так:
Код:
PixelData(i) = PixelData(i) / 255 * 247 + 8

То есть впихиваем значения из диапазона 0-255 в диапазон 8-255.
 
  • Спасибо
Реакции: mnemonix
А попробую, хотя не уверен, что прям аж такая точность нужна)