Как установить размер изображения с помощью RescaleOp

Я пишу тестовое приложение. Чтобы установить Alpha для изображения, я использую метод paintComponent. Смотреть следующий fragment …

public class TestImage extends JLabel{ public void paintComponent( Graphics g ) { super.paintComponent( g ); Graphics2D g2d=(Graphics2D)g; g2d.drawImage(this.bImage, rop, 0, 0); } public void setRescaleOp(RescaleOp rop){this.rop=rop;} } 

Как вы видете,

g2d.drawImage (this.bImage, rop, 0, 0);

не позволяет устанавливать ширину и высоту, как если бы я использовал g.drawImage (bImage, 0, 0, width, height, null);

Так что вопрос … Как установить ширину и высоту для bImage в этом случае?

Любой полезный комментарий оценен

Андрей

Первый filter() , как показано здесь , а затем масштабируйте с помощью drawImage() или AffineTransformOp , как показано здесь .

Приложение: В качестве альтернативы вы можете сначала масштабировать изображение (используя любой из указанных выше способов), а затем использовать RescaleOp в drawImage() .

В RescaleOp от RescaleOp масштабирует цветные полосы изображения; он не изменяет размеры изображения. Чтобы избежать путаницы, размерное масштабирование иногда называют передискретизацией .

Приложение: Вот пример использования drawImage() для повторной RescaleOp и RescaleOp для настройки альфы изображения.

введите описание изображения здесь

 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.RescaleOp; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * @see https://stackoverflow.com/questions/5838842 * @see https://stackoverflow.com/questions/5864490 */ public class AlphaTest { private static void display() { JFrame f = new JFrame("AlphaTest"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ImageIcon icon = new ImageIcon("image.jpg"); final AlphaPanel ip = new AlphaPanel(icon, 0.75); final JSlider slider = new JSlider(); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { int v = slider.getValue(); ip.setAlpha((float) v / slider.getMaximum()); ip.repaint(); } }); f.add(ip, BorderLayout.CENTER); f.add(slider, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { display(); } }); } } class AlphaPanel extends JPanel { private BufferedImage bi; private float[] scales = {1f, 1f, 1f, 0.5f}; private float[] offsets = new float[4]; private RescaleOp rop; public AlphaPanel(ImageIcon icon, double scale) { int width = (int) (scale * icon.getIconWidth()); int height = (int) (scale * icon.getIconHeight()); this.setPreferredSize(new Dimension(width, height)); this.bi = new BufferedImage( width, height, BufferedImage.TYPE_INT_ARGB); this.bi.createGraphics().drawImage( icon.getImage(), 0, 0, width, height, null); rop = new RescaleOp(scales, offsets, null); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.drawImage(bi, rop, 0, 0); } public void setAlpha(float alpha) { this.scales[3] = alpha; this.rop = new RescaleOp(scales, offsets, null); } } 
  • Создание пользовательской кнопки в Java с помощью JButton
  • Как добавить дополнительную кнопку в строку заголовка windows?
  • Добавьте n прямоугольников в canvas с MVVM в WPF
  • Swing: кнопки переключения каналов вместе с группой кнопок вместе с соответствующими пунктами меню
  • Обновление пользовательского интерфейса из разных streamов в JavaFX
  • Пользовательские заголовки / хром в приложении WinForms
  • Анимированная анимация Blackberry
  • Создать редактор гитарных аккордов в WPF (из RichTextBox?)
  • Более эффективный способ обновления пользовательского интерфейса от службы, чем намерения?
  • Как установить выходной stream в TextArea
  • JButton ActionListener - обновление GUI только после нажатия JButton
  • Interesting Posts

    Есть ли способ скомпилировать исходные файлы node.js?

    Приемник значений против приемника указателя в Голанге?

    32-разрядная ОС, процессор на базе x64 в Windows 8.1

    Добавление исполняемого файла в список команд Linux

    Spring RedirectAttributes: addAttribute () vs addFlashAttribute ()

    Как конвертировать PDF / A в обычный PDF?

    Повторно использовать '~ / .profile` для Fish?

    Как обрабатывать события с клавиатуры и мыши в полноэкранном эксклюзивном режиме в java?

    Опасно ли запускать процессор в чрезвычайно холодной среде?

    Google Analytics Google Analytics Ошибка 403: «У пользователя нет учетной записи Google Analytics»

    Параллельный wget в Bash

    Как скомпилировать Qt 5 под Windows или Linux, 32 или 64 бит, статические или динамические на VS2010, VS2012, VS2013 или VS2015 Express или g ++

    Создание электронной таблицы Excel из базы данных Oracle

    Поиск всех повторяющихся строк, включая «элементы с меньшими индексами»,

    tkinter TclError: файл чтения растровых изображений ошибок

    Давайте будем гением компьютера.